当前位置: 首页 > 知识库问答 >
问题:

硒Actions.click(),无需等待Java铬驱动程序

宋耀
2023-03-14

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

我目前的代码:

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()运行,页面就会无限挂起,我的脚本最终会超时。

我尝试过的其他事情:

>

  • 改为单击()

    减少等待时间并试图捕捉超时异常(Chromedriver似乎自己处理这些异常)

    有没有人有任何想法,我如何可以实现一个按钮按下没有任何等待?

  • 共有2个答案

    裴金鑫
    2023-03-14

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

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

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

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

    Runtime.getRuntime().exec("taskkill /F /IM ChromeDriver.exe");
    
    松安民
    2023-03-14

    动作.执行();应该是动作。

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

    或者,当点击触发时,您可以有一个断言,您可以从下一页断言某些内容,如果断言通过,则测试用例也应该通过。

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

     类似资料:
    • 正在研究尝试理解显式等待的方法。 所以单选按钮被点击后,输入形式发生了变化,所以我把给它一个时间元素出现,否则会出错“元素不可见......”。所以我认为现在是理解显式等待的好时机,因为我需要等到元素出现。 但出现错误“Selenium::WebDriver::error::ElementNotVisibleError:Element当前不可见,因此可能无法与之交互”。为什么这段代码不等到元素出现

    • 下面是我为firefox浏览器初始化的selenium web驱动程序。 尽管我给出了隐式等待,但我没有等待元素。它会立即抛出not found异常。如果我放那么它工作正常,没有任何问题。但是把现在测试用例包含更多线程的任何地方。sleep比实际的测试用例代码低。有人能给我建议正确的方法吗?

    • 如何等待硒Web驱动程序中的子窗口 当我点击提交按钮,它会把我带到子窗口,我断言URL,但有时子窗口需要时间来目前使用thread.sleep(4000),但这是错误的方式。

    • 我还是想不通。几天前我的硒工作得很好;现在它给我带来了一些错误。我首先使用Nuget,然后我尝试手动安装它。 如何重现问题: 错误: OpenQA. Selenium.WebDriverExcture:抛出一个带有空响应的异常,向远程WebDriver服务器发送HTTP请求以获取URLhttp://localhost:60695/session.异常的状态为ReceiveFailure,消息为:基

    • 我正在尝试使用 启动 的会话 我一直收到这个错误: (未知错误:DevToolsActivePort文件不存在)(从chrome位置/usr/lib/chrumbrowser/chrum浏览器启动的进程不再运行,因此ChromeDriver假设chrome已崩溃。)(驱动程序信息:ChromeDriver=71.0.3578.98,平台=Linux 4.15.0-45-generic x86_64

    • 我在eclipse中使用SeleniumWebDriver和TestNG。问题是页面在某些数据的中途重新登录,并且重新加载的时间是灵活的,这就是为什么我不能应用显式等待时间。我想让webdriver等待,直到重新加载完成。 我正在尝试通过此代码执行此操作……但它不起作用。