使用 Selenium Webdriver 等待更改的最佳实践?

2024-01-31

在单击事件之后,我需要等待元素属性发生更改,然后再继续(单击事件导致某些元素移出焦点,而某些其他元素通过 JS 获得焦点)

在花时间在网络驱动程序中寻找“waitForAttribute”(selenium 1 命令)的可靠替代方案之后......我可以让下面的代码工作。但我不确定这是否是最好的实现......

还有其他更好的解决方案吗?

wait = new WebDriverWait(wedriver1, TimeSpan.FromSeconds(5));
.....
button.Click();
wait.Until(webdriver1 => webdriver2.webelement.GetAttribute("style").Contains("display: block"));

另外,任何人都可以分享一个链接,告诉我如何使用 webdriver 处理 AJAX 事件更改。


我建议使用org.openqa.selenium.support.ui.ExpectedConditions.attributeToBe(WebElement element, String attribute, String value).

e.g.

WebDriverWait wait = new WebDriverWait(driver, 5); // time out after 5 seconds
someElement.click();
wait.until(ExpectedConditions.attributeToBe(someElement, "sort-attribute", "ascending"));

(docs https://seleniumhq.github.io/selenium/docs/api/java/org/openqa/selenium/support/ui/ExpectedConditions.html)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Selenium Webdriver 等待更改的最佳实践? 的相关文章

随机推荐

  • 为什么我无法使用 Rails 4.0.0.rc1 (ruby 2.0) 安装 postgresql

    第一次上论坛 所以我会尽量具体 对于任何可能的拼写错误 我们深表歉意 好吗 我对 Rails 比较陌生 不到一年 我想创建一个默认项目来使用它 我一直在开发中使用sqlite3 在生产中使用pg heroku 但现在我想把事情做好 我遇到了
  • C# MongoDb 连接到副本集问题

    根据 mongodb 网站 如果我只给副本集中的一个成员 我应该能够连接到副本集 即使种子列表不完整 C 驱动程序也能够连接到副本集 即使主服务器不在种子列表中 只要种子列表中至少有一台服务器做出响应 它就会找到主服务器 响应将包含完整的副
  • 如何在检测到 AccessViolationException 时强制应用程序崩溃

    我们使用自动崩溃报告工具 即http crashrpt sourceforge net http crashrpt sourceforge net 用于生成崩溃报告 因此 如果一段非托管代码通过访问NULL例如 指针 应用程序崩溃 崩溃报告
  • 使用 python requests 登录网站

    我在从 python 脚本登录网站时遇到一些困难 以便稍后在连接后从中检索数据 我认为 HTML 页面中包含需要用户名和密码的表单的部分如下 div class contentLogin div
  • 我可以在浏览器 ui 线程和 web 工作线程中安全地使用 html5 中的哪些本地存储

    我一直在尝试使用Web SQL 数据库 API在基于 webkit 的浏览器中 我一直在使用异步API主要在用户界面线程 and a 网络工作者 两个线程都访问同一个数据库 正如您所知 其背后是 sqlite 一切都表现良好 但偶尔会有事务
  • 使用 C++ 和 i2c 工具从虚拟 i2c 写入和读取

    我正在尝试使用 C 写入和读取 I2C 总线 我的I2C总线是虚拟的 第一件事是加载内核模块i2c stub 我可以通过 bash 完成所有事情 现在我将其移植到 C 我可以打开i2c总线 获取特定地址的i2c总线 但无法读写 我正在虚拟化
  • Jekyll 上是否有支持与 mathjax 配合良好的 Markdown 解析器?

    我使用基于 Jekyll 的博客 需要一个不会破坏我的 Mathjax 表达式的 Markdown 解析器 例如 解释b t b t 1 as b em t b em t 1 Mathjax 和 markdown 在 math stacke
  • Microdata/Schema.org/SEO:如何正确设置 ContactPoint

    将微数据添加到页面后 我通常会转到 https developers google com webmasters structed data testing tool https developers google com webmaste
  • WiX:当包含在 Burn/EXE 中时,如何显示 MSI 的对话框?

    我有一个带有对话框的 MSI 提示用户 1 浏览到安装目录 2 接受 EULA 3 安装完成后启动应用程序 我将 MSI 封装在 Burn Bundle 中以制作 EXE 现在我看到的只是 EXE 提示输入 EULA 但没有提示选择安装目录
  • WSDL Web 服务从 C# 返回空数组

    我正在使用具有以下地址的网络服务 https api n11 com ws CityService wsdl https api n11 com ws CityService wsdl 该服务有一个方法 GetCities 你可以测试它ht
  • LINQ to Entities 无法识别方法“System.DateTime GetValueOrDefault()”

    与非常简单的代码作斗争 这些代码在其他类中运行类似的代码时不起作用 如果我删除 GetValueOrDefault 它将无法编译 我也在使用 System Linq 我收到此运行时错误 LINQ to Entities 无法识别方法 Sys
  • Apache 正在运行,但 phpmyadmin 显示空白页面

    昨天在我的电脑上安装xampp后 一整天都正常工作 今天 我要继续我的项目 Apache 和 MySQL 正在运行 但我的浏览器中的 localhost phpmyadmin 显示空白页面 没有任何错误消息 只是完全白屏 然后我尝试打开我的
  • 将新字体安装到 Android 模拟器的最佳方法是什么?

    我知道关于 Android 模拟器上的字体安装有很多问题 我将分享对我有用的方法作为答案 如果有人有更好的方法 请分享 每当 android 无法找到特定字符时 它就会查找DroidSansFallback ttf 所以你需要做的是替换Dr
  • 在 Android 中录制后,FFMpeg 将文本添加到实际视频文件中

    我使用 JavaCV 在 Android 设备中录制视频并使用视频视图播放它 现在想在播放时在视频上显示一段文字 该文字是在录制视频后输入的 播放视频时 必须在所有视频播放器中看到此文本 我已经通过链接如何在视频录制中添加文字 https
  • 在 C++ 中创建结构体数组

    我正在尝试创建一个结构数组 下面的代码有效吗 我不断收到expected primary expression before 令牌错误 int main int pause struct Customer int uid string na
  • HiveQL 中的“如果存在则更改表 t1 重命名为 t2”?

    我想重命名 Hive 表 如果存在 如果不存在则不生成错误 我需要类似的东西 ALTER TABLE IF EXISTS t1 重命名为 t2 但这不会运行 无法识别alter table语句中 if exists rename 附近的输入
  • angular2 observable,在组件中未定义

    我是 angular2 的新手 我需要一些帮助 我正在使用以下服务类别 import Injectable from angular2 core import Http from angular2 http import rxjs add
  • 切片是按值传递的吗?

    在 Go 中 我试图为我的旅行推销员问题创建一个打乱切片函数 在执行此操作时 我注意到当我开始编辑切片时 每次传递它时 我给出的打乱函数都是不同的 经过一番调试后 我发现这是因为我编辑了函数内的切片 但既然 Go 应该是一种 按值传递 语言
  • onbeforeunload事件在IE9中太热情了

    这是一些示例测试 html a href Go nowhere 1 a a href Go nowhere 2 a a href http www google com Go somewhere a
  • 使用 Selenium Webdriver 等待更改的最佳实践?

    在单击事件之后 我需要等待元素属性发生更改 然后再继续 单击事件导致某些元素移出焦点 而某些其他元素通过 JS 获得焦点 在花时间在网络驱动程序中寻找 waitForAttribute selenium 1 命令 的可靠替代方案之后 我可以