【问题标题】:Can we run Selenium Webdriver Tests without interactive mode我们可以在没有交互模式的情况下运行 Selenium Webdriver 测试吗
【发布时间】:2018-12-25 00:58:26
【问题描述】:

我正在使用 selenium webdiver 在不同的浏览器上运行我的 selenium 测试,但是它们都需要交互模式来运行测试,我们可以在没有交互模式的情况下运行这些测试吗?

【问题讨论】:

  • interactive 模式是什么意思?
  • 对于chrome和firefox,可以在测试运行时最小化浏览器窗口,但是IE应该不支持。
  • 我的意思是当测试运行时,我们需要确保运行测试的浏览器应该处于活动状态,而不是处于最小化模式并且不在后台运行,我想摆脱这个。
  • @yong 我已经在 chrome 上使用代理运行了测试,但它仍然是同样的问题
  • 你的脚本是否做了一些事情,比如鼠标悬停在页面上?通常,对于单击,sendkeys 不需要浏览器窗口处于活动状态(获得焦点)。但鼠标悬停仅适用于活动的浏览器窗口。

标签: c# selenium selenium-webdriver webdriver interactive


【解决方案1】:

有几种解决方案:

1. 您可以使用无头测试方法,尝试使用 HtmlUnitDriver,PhantomJSDriver,

2. 使用Docker 和预设图片,这里是example

下面是无头测试的代码示例,(虽然在 java 中,我看到你正在寻找 c#),但它可能会有所帮助

HTML驱动程序

@Test
public void runHtmlHeadless() {
    String URl = "https://www.google.com";
    HtmlUnitDriver driver = new HtmlUnitDriver();
    driver.setJavascriptEnabled(true);
    driver.get(URl);
    System.err.println("TITLE: " + driver.getTitle());
}

  @Test
  public void createChromeDriverHeadless() throws IOException
  {

      System.setProperty("webdriver.chrome.driver", "/Users/user/Downloads/chromedriver");

      ChromeOptions chromeOptions = new ChromeOptions();
      chromeOptions.setBinary("//Applications/Google Chrome.app/Contents/MacOS/Google Chrome");
      chromeOptions.addArguments("--headless");

      WebDriver driver = new ChromeDriver(chromeOptions);
      driver.navigate().to("https://the-internet.herokuapp.com/login");

      WebDriverWait waitForUsername = new WebDriverWait(driver, 5000);
      waitForUsername.until(ExpectedConditions.visibilityOfElementLocated(By.id("username")));

      driver.findElement(By.id("username")).sendKeys("tomsmith");
      driver.findElement(By.cssSelector("button.radius")).click();

      WebDriverWait waitForError = new WebDriverWait(driver, 5000);
      waitForError.until(ExpectedConditions.visibilityOfElementLocated(By.id("flash")));

      Assert.assertTrue(driver.findElement(By.id("flash")).getText().contains("Your password is invalid!"));
      driver.quit();
  }

希望这会有所帮助,

【讨论】:

    猜你喜欢
    • 2014-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-14
    • 2016-04-28
    • 1970-01-01
    • 1970-01-01
    • 2021-08-03
    相关资源
    最近更新 更多