【问题标题】:Selenium Actions.click() with no wait Java ChromedriverSelenium Actions.click() 无需等待 Java Chromedriver
【发布时间】:2021-10-11 04:36:33
【问题描述】:

我正在编写一个与我们的一个系统交互的 selenium 脚本。在我们的系统中,有一个按钮,当按下时,只有大约一半的时间正确加载页面(它只是在每隔一段时间加载无限时间),因此我不能依赖默认的 selenium 等待要加载的页面。出于这个原因,我想按下按钮,并在打开一个新窗口以继续执行脚本之前立即关闭网络浏览器。不幸的是,我无法解决按钮本身的问题。

我当前的代码:

Actions action = new Actions(driver);
        
WebElement webElement = driver.findElement(By.id("garbage_button"));
        
action.moveToElement(webElement).click();
        
action.perform();

System.out.println("It's worked");

目前,不太可能到达 System.out,因为一旦运行 action.perform(),页面就会无限挂起,我的脚本最终会超时。

我尝试过的其他事情:

  • WebElement.click() 代替

  • 减少等待时间并尝试 捕获超时异常(Chromedriver 似乎可以处理这些 异常本身)

有没有人知道如何在不等待的情况下按下按钮?

【问题讨论】:

  • 点击按钮后页面挂起,无法关闭浏览器。您想关闭浏览器,但在浏览器挂起后没有执行任何代码,因此您想关闭浏览器。对吗?
  • 是的,没错。我可以通过关闭驱动程序并打开一个新的来正确关闭浏览器。这段代码正在运行,所以我觉得不需要包含它。

标签: java selenium selenium-chromedriver


【解决方案1】:

action.perform(); 在 Java 中应该是 action.build().perform();。

一旦你这样做了,为什么不触发driver.quit() 关闭窗口?

或者您可以在触发点击时进行断言,您可以从下一页断言某些内容,如果断言通过,那么测试用例也应该通过。

但是由于您多次提到新页面无法加载,在这种情况下您的断言将失败,这应该没问题,因为实际页面根本没有加载。

【讨论】:

  • 感谢指正!问题是,代码仍然挂在 action.build().perform() 上,因为在页面加载之前它不会从该行开始,所以我无法关闭窗口,也无法直接运行断言之后。
  • 在编写断言时不要考虑积极的结果,即在新页面上有一些东西,例如页面标题,断言新页面标题。如果没有出现新页面,断言将失败,这是预期的行为。
  • 你认为你可以提供一些粗略的语法来表达你的意思吗?如果我在 build().perform() 之后直接放置一个断言(例如 Assert.assertEquals(true, elementOnNextPage.isDisplayed()); 它永远不会到达那一行。只是想理解你的意思。再次感谢你的帮助
  • 点击成功后,页面标题有变化吗?
  • build() 已包含在 perform() github.com/SeleniumHQ/selenium/blob/… 中
【解决方案2】:

在我们的系统中,有一个按钮,按下时只会加载 大约一半的时间页面正确(它只是在加载时挂起 每隔一段时间都有无限的时间),因此我 不能依赖默认的 selenium 等待页面加载。

您可以通过这样做更快地加载页面。这将使 Selenium WebDriver 等待初始 HTML 文档完全加载和解析,并丢弃样式表、图像和子帧的加载。

ChromeOptions chromeOptions = new ChromeOptions();
chromeOptions.setPageLoadStrategy(PageLoadStrategy.EAGER);

您可以使用以下命令终止驱动程序会话。

Runtime.getRuntime().exec("taskkill /F /IM ChromeDriver.exe");

【讨论】:

    猜你喜欢
    • 2021-05-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-25
    • 2012-06-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多