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

Selenium webelement.click()是否要等到下一个页面加载?

黄仲渊
2023-03-14

我告诉Selenium等到它看到一个元素-Selenium看到它我告诉Selenium点击这个元素,它是一个链接到一个新页面的按钮-Selenium点击它。

问题是点击之后,Selenium然后会等到下一个页面满载(页面有时候一秒钟就加载了,或者等了好久,我觉得是那个页面上的Zen Desk Live Chat的问题)。

当它被完全加载时,它会抛出一个错误,说它点击的元素不能看到(当然不能看到,因为它现在在一个新页面上)

我试过用

driver.manage().timeouts().implicitlyWait(1, TimeUnit.SECONDS);

然而,这无济于事。我也试过

wait.until(ExpectedConditions.visibilityOfElementLocated(
By.xpath(element)));

然而,这有同样的问题。

下面是我目前正在使用的代码。

try {
    wait.until(ExpectedConditions.visibilityOfElementLocated(
    By.xpath(element)));
    WebElement we = driver.findElement(By.xpath(element));
    we.click();
    System.out.println("Clicked: " + element);
}catch (Exception e){
    System.out.println(e.getMessage()); 
}   

我希望一旦元素被点击,Selenium就会继续运行,而不关心下一个页面是否加载。

然而,当第二个页面加载时,有时页面会卡在“waiting for widget-mediator.zopim.com”,并且Selenium将不会通过click()行进行,直到WebDriverWait时间过期(60秒)。在60秒过期之后,我在控制台输出中看到以下错误:

[1561374309.111][SEVERE]: Timed out receiving message from renderer: 60.000
[1561374309.112][SEVERE]: Timed out receiving message from renderer: -0.002

这里还有别的事吗?或者Click()是否要等到页面加载完毕,如果单击会将页面加载到一个新页面?如果是的话,有没有办法告诉它不要再等了?我有其他代码来检查页面是否已加载,但我不需要Click()来完成此操作。

提前道谢。

共有1个答案

孟成化
2023-03-14

Selenium(或者更正确地说,WebDriver)的点击行为由W3C WebDriver规范管理。在该文档中,为请求元素单击时发生的情况定义了完整的算法。通常,如果点击将导航到一个新页面,驱动程序将根据页面加载策略等待该新页面被“加载”(scare引用是有意的),直到页面加载超时。

页面加载策略默认为“normal”,或等待文档的readystate完成。如果您在驱动程序实例化过程中请求的能力中将其设置为“无”,驱动程序将完全不会等待。选择该路由意味着您需要处理正在加载的页面的所有同步。注意还有第三种页面加载策略,“Eager”,但在撰写本文时,并不是所有WebDriver实现(最显著的是chromedriver)都支持它。

您可以在Selenium代码中调整运行时的页面加载超时。一种方法可能是在单击该特定元素的持续时间内将超时降低到一个相对较低的值,然后将其恢复到先前的值。这里的缺点是在继续之前必须捕获页面加载超时时抛出的超时异常。

 类似资料:
  • 问题内容: 我使用AJAX在页面A上显示页面B的内容。 如何在内容显示之前让jQuery等待所有内容加载(文本,图像等)? 当处理AJAX请求时,我使用beforeSend向用户显示加载动画。现在,我想“延长”等待时间,以便在加载所有图像之前加载动画不会消失。 我最初尝试隐藏附加数据,等待所有图像加载,然后显示内容- 内部但事件似乎没有触发。 有任何想法吗? 更新: 更新的代码: 问题答案: 您必

  • 我试图创建一个等待加载页面的方法,但我出现了一个错误。可能我没有正确使用这个方法。 错误是:

  • 问题内容: 您是否需要在标签末尾添加一个?我在W3schools.com上看到了一个不带的示例: 我知道没有必要至少在浏览器中自动关闭标签,但是我应该这样做吗? 问题答案: 该只需要XHTML和XML。 如果您使用的是HTML5文档类型,则 无需以 这种方式 终止自动关闭标签 。 这适用于,,等。 即只要使用,和。 如果您需要一个空元素(如),请不要使用,而应使用。这很重要,因为在HTML5中,斜

  • 问题内容: selenium要driver.get (url)等到整个页面加载完毕。但是,抓取页面尝试加载一些无效的JS脚本。因此,我的Python脚本正在等待它,并且无法在几分钟内运行。该问题可能出现在网站的每个页面上。 如何限制等待时间,阻止文件的AJAX加载或其他方式? 我也在中测试了我的脚本,但将使用PhantomJS()或可能使用Firefox()。因此,如果某些方法使用了浏览器设置的更

  • 本文向大家介绍jQuery EasyUI 页面加载等待及页面等待层,包括了jQuery EasyUI 页面加载等待及页面等待层的使用技巧和注意事项,需要的朋友参考一下 下面一个代码片段是 easyUI 页面加载等待,代码如下所示: 下面看个工具类 基于easyui的页面等待提示层,即mask 效果图: 以上所述是小编给大家介绍的jQuery EasyUI 页面加载等待及页面等待层,希望对大家有所帮

  • 我目前正在建立一个网站,通过JavaScript使用自定义快速导航。 如果用户按右键,他将被导航到“我的页面列表”中的下一页,通过按ALT Right或Left键,他可以在浏览器历史记录中前后导航。 这是我当前的代码: 这一切都很好,除了一个小问题:假设我想返回三页-如果我是一个有逻辑思维的人,我会先按ALT Left返回一个站点,然后当我在上一个站点上时,只需按住ALT,然后再次按Left返回一