public class Chatsite{
public WebDriver driver;
private WebElement talkbox;
private WebElement chatlog;
private WebElement sendbutton;
public Chatsite(WebDriver passed_in_driver){
driver = passed_in_driver;
talkbox = driver.find_element("name", "talkbox");
sendbutton = driver.find_element("name", "send");
chatlog = driver.find_element("name", "chatlog");
driver.get("http://www.yoursite.com");
}
public void say(String string_to_type){
talkbox.send_keys(string_to_type);
sendbutton.click();
}
public void sees_in_the_chatlog(String expected_content){
String current_chat_text = chatlog.getText();
assertTrue("Couldn't find content", current_chat_text.contains(expected_content));
}
}
#Now, in your tests
#Name your users so it's easier to keep track of them
Chatsite david = Chatsite.new(user_1);
Chatsite susan = Chatsite.new(user_2);
david.say("Isn't it a fine day?");
susan.sees_in_the_chatlog("Isn't it a fine day?");
susan.say("If you're going to talk about the weather I'm failing this test case");
## And so on in that fashion
3条答案
按热度按时间jucafojl1#
你要担心两件事。第一个是确保每个用户使用不同的浏览器,第二个是并发运行两个用户。有几种不同的方法可以完成每一个任务,所以我将分别研究它们。
管理两个浏览器
第一部分,打开两个浏览器,并不太难;您可以为每个对象创建一个单独的WebDriver对象。但是,您可能需要使用两个不同的浏览器,以避免任何类型的会话共享问题:
如果你需要打开同一个浏览器的两个示例,最好的选择是使用Selenium Grid来托管你想要的浏览器,然后创建到它们的远程连接:
如果您不想设置自己的Selenium Grid,可以使用Sauce Labs这样的服务来管理它(并且还为您提供了添加额外测试平台资源的简单方法)。
同时管理两个用户
这听起来像是您可以让一个测试类依次对相关的Webdriver执行每个操作。使用类似Page Object Model的东西来提供表示页面的服务对象,您也可以传递WebDriver的示例。然后,你可以更流畅地表达你的测试逻辑,而不是处理不同的webdrivers和元素:
7eumitmz2#
如果你不需要在同一个浏览器上测试它,那么请参考这篇关于如何打开多个浏览器窗口进行测试的文章-如何在WebDriver中切换示例。
kupeojn63#
你可以很容易地通过使用playwright + javascript/typescript自动化聊天应用程序。我一次使用10多个浏览器示例来处理不同的用户。它很容易处理不同的用户在同一浏览器类型[10 chrome 浏览器可以加载一个句柄]与多个浏览器上下文。