【问题标题】:Stop browser load from selenium webdriver停止从 selenium webdriver 加载浏览器
【发布时间】:2013-04-05 12:35:47
【问题描述】:

我的 selenium webdriver 转到一个页面并等待该页面完成加载。如果 30 秒通过它超时并且脚本失败。

有没有办法让 webdriver 在 30 秒后停止页面加载(比如在浏览器上按“x”)?这将防止我的驱动程序超时。

我正在使用 Chromedriver。

【问题讨论】:

  • 我的经验表明,webdriver 确实在等待整个页面完成加载。我正在测试一个需要很长时间才能加载的 Web 应用程序,但 webdriver 可以正常工作!此外,我还包含了隐式等待。例如:driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);
  • 另外,如果您阻止网页完全加载,它可能会破坏您的测试脚本。
  • 你看过 window.stop() 使用 javascript

标签: google-chrome selenium webdriver


【解决方案1】:

这就是我遇到这个问题的方式。在chrome支持pageload之前,我会一直使用这种方式。

我在 chrome 中安装了一个名为 Stop load 的扩展程序,并设置了 5 秒停止加载。

然后我使用默认设置启动我的驱动程序 -

DesiredCapabilities capabilities = DesiredCapabilities.chrome();
capabilities.setCapability("chrome.switches", Arrays.asList("--user-data-dir="+System.getProperty("user.home")+"\\AppData\\Local\\Google\\Chrome\\User Data"));
System.setProperty("webdriver.chrome.driver", "C:\\Program Files (x86)\\Google\\Chrome\\Application\\chromedriver.exe");
driver = new ChromeDriver(capabilities); 

如果 chrome 中的页面在 5 秒内未加载,您的扩展程序将在 5 秒内将其杀死。

如果您在扩展程序中设置正确的停止加载时间,它的工作方式类似于隐式等待

【讨论】:

    【解决方案2】:

    您可以在 Ruby 中使用 JavaScript 函数 window.stop() 和方法 Selenium::WebDriver::Driver#execute_script 停止页面加载:

    driver.execute_script("window.stop()")
    

    【讨论】:

    • 当您访问界面时,您将不再需要调用。 Selenium API 是......一个阻塞的竞争条件混乱。更重要的是,即使 page_load 超时也不会拯救你,而只会改变问题。如果您在超时后访问正在加载的页面已经让您重新控制,您将停止加载。
    • @Slotos 您找到其他解决方案了吗?我也对此感到恼火。谢谢。
    【解决方案3】:

    试试这个:

       driver.manage().timeouts().pageLoadTimeout();
    

    文档:
    Page Load Timeout

    另外,作为提示,您不能使用 Selenium WebDriver 访问浏览器的本机控件。如果您想这样做,如果您使用的是 Linux,请使用 Sikuli 之类的工具,如果您使用的是 Windows,请使用 AutoIt 之类的工具。

    【讨论】:

      猜你喜欢
      • 2015-10-31
      • 2022-12-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多