问题标签 [webdriverwait]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
738 浏览

java - 如果从 DOM 中删除元素,则 ExplicitWait 需要更多时间

我正在使这个网站自动化,但面临ExplicitWait管理时间的条件问题。

场景是当我在发送用户名后单击登录链接或提交按钮时,它会在此过程中显示一个加载程序,一旦进程完成,加载程序就会从 DOM 中删除。

我已经使用了invisibilityOfElementLocated如下条件

但这无法预测正确的时间,它需要更多时间(不完全是 60 秒,而是大约 15-20 秒或可能是 30 秒。)然后允许执行下一个命令。

我必须在 4 个命令之前放置同一行才能完成登录过程。所以它似乎消耗了大约 90 秒来登录。

如果我不使用Explicitwait或删除Impliciwait等待,那么脚本会一直失败,因为加载程序会点击而不是其他一些元素。

到目前为止我尝试过的代码:

是否有任何解决方案可以在加载程序被删除后立即开始执行操作?

或者有什么方法可以等到加载器元素从 DOM 中删除。删除后,我可以继续进行进一步的操作吗?

0 投票
1 回答
3100 浏览

c# - 使用 Selenium 使用 WindowHandles 跟踪和迭代选项卡和窗口的最佳方法

我们正在使用 Selenium webdriver 为 Internet Explorer 11 进行 UI 测试。在测试的 web 应用程序中,弹出了几个屏幕。在几次测试中,我们最终得到了三个浏览器窗口,以及三个 Driver.WindowHandles。为了从一个 WindowHandle 切换到另一个,我们希望 Driver.WindowHandles 会像最旧的窗口一样在前进行排序,最新的窗口在后。但事实并非如此:它是完全随机的! 

因为窗口句柄是一个 GUID,所以我们最终创建了一个字典,其中 WindowHandle GUID 作为键,其值是在浏览器窗口中加载的页面类型的值。但这也会导致在关闭窗口时维护字典。 

对于这么简单的事情,这似乎是很多工作。有没有更好的解决方案?

0 投票
2 回答
2473 浏览

selenium - 隐式等待和显式等待之间的内部工作区别是什么

显式等待示例

隐式等待示例

假设 myDynamicElement 在第 6 秒可见,因此在这两种情况下,驱动程序将等到第 6 秒并且控制将移至连续的书面语句,我想了解在这种情况下隐式等待和显式等待有何不同?他们如何在内部工作?

0 投票
1 回答
6719 浏览

selenium - 在最终页面加载不可预测的情况下,如何使用 Selenium WebDriver 等待重定向链解决?

我想自动化一个脚本来验证网页中的某些内容。

登录页面在登陆应用程序页面之前重定向了几次,这些重定向偶尔会导致问题。这个问题肯定与时间有关。那么 webdriver 怎样才能等到最后一页完全加载或者解决呢?

一个典型的解决方案是等待目标页面上的元素可用。不幸的是,我们使用了 100 多个唯一网址,因此没有可预测的着陆页。

那么如何实现一个 ExpectedCondition 来等待应用程序在重定向方面稳定下来呢?

主要议程是,我有一组 URL,我想通过检查其中的内容来验证所有这些 URL 是否有效。所有这些都是我的组织合作的学习内容的直接 URL,例如 Lynda、skillsoft 等。因此,当我们首先通过自动脚本启动这些 URL 时,它会询问身份验证(我的组织凭据),然后它会重定向到相应的站点。在这些重定向期间,在某些情况下会发生多次重定向,最后会加载内容页面。这就是场景。我的脚本失败主要是由于我猜的等待

0 投票
1 回答
501 浏览

c# - 未找到元素时尝试块不处理场景

我使用了下面的代码,发现 TRY 块不适用于元素不存在的情况:

我有一个用例,其中 Webelement 的存在取决于其他条件,因此它在网页上始终不存在或不可见。如果元素存在,则它正在工作,如果元素不存在,则 Try catch 无法使用您上面的代码处理场景。

我也试过: bool isPresent = Driver.Findelements.(xpath).Count() > 0; // 列表,但如果元素不存在,它就不能正常工作

0 投票
2 回答
8084 浏览

java - 是否可以在 Selenium Webdriver Java 中不使用 driver.switchTo().frame("frameName") 切换到框架中的元素?

我有多个嵌套框架,我需要访问这些框架下的元素。由于这些框架是动态的,我无法访问这些元素。

我是否可以在不使用的情况下访问元素driver.switchTo().frame()

喜欢直接使用 xpath 或 jquery、javascript 或任何东西?欢迎任何建议

0 投票
2 回答
2962 浏览

java - Selenium 隐式和显式等待,未找到超时异常元素

我是 selenium 的新手(但经验丰富的 java 开发人员)。

我正在使用类似下面的东西:

其中 pWait 是:

但是,当我运行测试用例时,出现以下错误:

我认为它应该在抛出这个异常之前等待至少 15 秒。从上面的日志看来,它似乎只在 4 毫秒内引发了异常。我可以在控制台上看到,一旦它到达那条线,它就会抛出异常。

我将隐式等待设置为 0 并使用显式等待。

我在这里有什么遗漏吗。

此外,在显式和隐式等待中,是达到那么多时间还是精确那么多时间,例如,如果我将隐式等待设置为 10 秒,那么这是否意味着等待确切的 10 秒或等待最多 10 秒(如果找到元素然后继续, 即使元素 founf 在第 6 秒)

显式等待也一样吗?

请帮忙

0 投票
2 回答
2905 浏览

python - 如何使用 Selenium 和 Python 解决“WebDriverException:消息:TypeError:无法访问死对象”并等待可用帧

我需要测试一个相当复杂的网页设置,其中包含嵌套框架。

在实际问题中,硒代码正在加载包含我想切换到的框架的新网页内容。为了避免任何显式等待,我尝试了以下代码片段:

但是,此代码段总是失败并导致以下错误:

但是,如果我另外使用睡眠:

selenium 能够在框架内找到框架并切换到它。看起来在错误情况下 selenium 切换到“frame1”,而“frame2”尚未加载,但“frame2”在“frame1”的其他实例中加载,或者 selenium 无法识别(可能是错误?)。所以现在硒在一些'frame1'内,由于某些原因没有意识到'frame2'已经加载。

我可以解决这个问题(不使用长时间睡眠)的唯一方法是使用这段丑陋的代码:

所以每当我得到一个WebDriverException(死物)时,我都会去顶层框架并尝试切换到内部框架 - 逐帧。

我可以尝试其他方法吗?

附加信息

  • iframe 是嵌套的,即“frame2”在“frame1”内。
0 投票
3 回答
2801 浏览

selenium - 隐式 vs 显式 vs Fluent 等待

隐式,显式,流利的等待有什么区别?

如果我们在隐式等待中设置 10 秒并且在 10 秒之前,则在 3 秒内只有元素被定位。

到时候会发生什么?它将等待 10 秒或继续进行。

0 投票
3 回答
1332 浏览

java - driver.manage.wait(long timeout) 和 Explicit wait 之间的区别

谁能说出以下用法的区别:

(显式等待)了解我未来的参考。

请原谅我的问题对于我自己在自动化方面的新蜜蜂来说是愚蠢的。

它是显式等待的简单形式吗?