1

我有一个自动化聊天应用程序的任务。我正在使用 Webdriver 和 Java。两个不同的用户将在两个不同的浏览器上同时登录并发起聊天。如果有人能给我一些建议,我将不胜感激。

4

2 回答 2

7

你有两个问题要担心。第一个是确保每个用户有不同的浏览器,第二个是同时运行两个用户。每种方法都有几种不同的方法,因此我将分别查看它们。

管理两个浏览器

第一部分,打开两个浏览器,并不太难;您可以为每个创建一个单独的 WebDriver 对象。但是,您可能必须使用两种不同的浏览器,以避免任何类型的会话共享问题:

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.chrome.ChromeDriver;

WebDriver user_1 = new FirefoxDriver();
WebDriver user_2 = new ChromeDriver();

如果你需要打开同一个浏览器的两个实例,你最好的选择是使用Selenium Grid来托管你想要的浏览器,然后创建到它们的远程连接:

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.remote.RemoteWebDriver;
import org.openqa.selenium.remote.DesiredCapabilities;

DesiredCapabilities capabilities = DesiredCapabilities.firefox();
URL server = new URL("http://your-server-location.com");
WebDriver driver = new RemoteWebDriver(server, capabilities);

如果您不想建立自己的 Selenium Grid,您可以使用像Sauce Labs这样的服务来为您管理它(并且还为您提供了一种添加额外测试平台资源的简单方法)。

同时管理两个用户

听起来您可以让一个测试类依次针对相关的 Webdriver 执行每个操作。使用类似页面对象模型的东西来提供代表你的页面的服务对象,你也可以传递一个 WebDriver 的实例。然后,您可以更流畅地表达您的测试逻辑,而不是处理不同的 webdrivers 和元素:

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
于 2013-07-30T07:37:34.293 回答
1

如果您不必在同一个浏览器上测试它,那么请参阅这篇关于如何打开多个浏览器窗口进行测试的帖子 -如何在 WebDriver 中切换实例

于 2013-07-30T05:56:01.657 回答