Selenium 使用相对 XPath 定位器显式等待

2024-03-12

将 Selenium WebDriver 与 Python 3.4 结合使用。

我正在编写一个抓取工具,并使用相对于某些非根祖先元素的 XPath 来定位元素,如下所示:

ancestor_element = driver.find_element_by_xpath(ancestor_xpath)
child_element = ancestor_element.find_element_by_xpath(child_xpath)

这按预期工作。但是,我不确定如何通过显式等待调用来执行此相对位置,因为我看到的示例使用以下语法:

child_element =  WebDriverWait(driver,10).until(
    EC.presence_of_element_located((By.XPATH, child_xpath))
)

它似乎根据页面根计算 XPath,并抛出一个错误,抱怨 XPath 字符串的“.//”开头。

对此有什么建议吗?


有同样的问题并遵循lambda来自@Ron Norris 评论的示例。但是,文档并不清楚如何找到child_element相对于ancestor_element,即使使用时lambda.

你实际上可以替换driver in the WebDriverWait打电话给你的ancestor_element,明确地仅搜索“下”的内容ancestor_element(尽管文档字符串声明它必须是WebDriver,我发现一个WebElement也有效)。

所以我最终得到了这样的结果:

child_element =  WebDriverWait(ancestor_element,10).until(
    EC.presence_of_element_located((By.XPATH, child_xpath))
)

如果你想使用lambda,然后你可以这样做:

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

Selenium 使用相对 XPath 定位器显式等待 的相关文章

随机推荐

  • 哈斯克尔范围 (GHCi)

    我正在阅读为你学习 Haskell 以造福人类 http learnyouahaskell com 他的例子 http learnyouahaskell com starting out texas ranges 2 2 20 and 3
  • 逻辑或在doctrine2 getRepository->findBy()

    如何像doctrine2中那样编写查询 SELECT from table where field value1 or field value2 我发现了类似的东西 em gt getRepository myentitity gt fin
  • 从 Selenium WebDriver 中的 WebElement 获取 CSS 选择器字符串 - Java

    我有一个 WebElement 我只是想提取 CSS 选择器字符串 这是我调试代码时变量的值 ChromeDriver MAC 上的 chrome 345345345n5435345b34 gt css 选择器 div class 警报警报
  • UICollectionView 自动调整大小和动态行数

    我正在尝试做这样的事情 Basically I am using a UICollectionView and the cells 3 diferent xib 到目前为止 它有效 我想做的事情是 Set a autoheight 如果旋转
  • 使用c#泛型继承,而类类型是继承的

    在 C 中可能有这样的事情吗 假设我有这个 public class T U 我想要这个 public class A
  • scipy linregress 函数错误的标准错误返回?

    我遇到了一个奇怪的情况 scipy stats linregress 似乎返回了不正确的标准错误 from scipy import stats x 5 05 6 75 3 21 2 66 y 1 65 26 5 5 93 7 96 gra
  • mergeMap 和 mergeMapTo 有什么区别?

    在 rxjs5 文档中 它提到 为了减少多态性并从运算符中获得更好的性能 一些运算符已被拆分为多个运算符 它的实际含义是什么以及如何使用 mergeMapTo 运算符 来自docs http reactivex io rxjs class
  • 如何更改 Rust 字符串中特定索引处的字符?

    我正在尝试更改字符串中特定索引处的单个字符 但我不知道如何更改 例如 我如何将 hello world 中的第四个字符更改为 x 以便它成为 helxo world 最简单的方法是使用replace range https doc rust
  • 让模型监听嵌套模型和集合的最佳模式?

    使用 Backbone js 让模型监听所有嵌套模型和集合的最佳模式是什么 我应该将嵌套模型 集合放入属性中吗 我应该手动创建亲子关系并触发事件吗 与 Backbone js 的大多数事情一样 您不会得到 正确 的答案 但我可以分享我是如何
  • 在一定规则下动态创建数组

    我需要创建具有遵循这些模式的某些值 属性的数组 不幸的是 我的数学知识不允许我找到规律 以下是应在 从下到上 n 1 2 和 3 处输出的数组示例 计算每条边上的红色框 所有红色和绿色方块都应该分配一些值 而所有白色方块都需要未定义 或空
  • 参数里面的冒号是什么意思? [复制]

    这个问题在这里已经有答案了 words pron dict str 上的冒号是什么意思 我在 python 2 7 上遇到语法错误 是Python 3吗 我该如何使用它 class TextToSpeech CHUNK 1024 def i
  • DDD 中哪一层应该包含查询

    我有一个简单的 DDD 服务 带有文章聚合根 我使用 MediatR 和 CQRS 来分离命令和查询 在 DDD 域中不应依赖于应用程序和基础设施层 我有一个存储库 IArticleRepository 用于从文章数据库中组合一些数据 我有
  • 显示字符串的可能组合

    我试图获取一个字符串并显示它的可能组合 在 PHP 中 但同时按每个单词的顺序说出 例如 你好吗 将返回 一个数组 How are you How are are you how you are 我现在的代码显示了所有组合 但我希望它保持它
  • OnLoad方法和Load事件之间的区别?

    有什么区别OnLoad方法和Load事件 我正在开发 WinForm 控件 我应该注册到Load事件或覆盖OnLoad方法 每一种的优点和缺点是什么 我会去覆盖OnLoad 这样您就可以节省 CPU 周期来调用事件处理程序 如果您从控件继承
  • 单元测试 MVC 控制器

    我的 ASP NET MVC 应用程序中的控制器根据几个相当简单的规则预先填充我的视图显示的表单数据 在我的单元测试中涵盖这似乎是一件好事 但我能看到验证表单中是否放置了正确数据的唯一方法是以一种不自然的方式从控制器中提取逻辑 有人可以提出
  • 如何在Sphinx中展开侧边栏目录树上的所有小节?

    我想知道是否有一种方法可以扩展包含在标题下的所有小节index rst file 举个例子 它是这样的 Section 1 Section 2 Section 3 这就是我希望的样子 Section 1 Subsection 1 1 Sub
  • 如何手动渲染表单字段并设置其初始值?

    我正在尝试手动渲染表单的字段 以便我的设计师同事可以操作 HTML 中的输入元素 而不是在 Python 源代码中苦苦挣扎 IE 而不是像这样声明表单字段 form first name 其实我确实
  • 静态发布和 HTTPS

    遵循这个问题 大型网站上 Silverstripe 的静态发布 https stackoverflow com questions 46313840 static publishing in silverstripe on large si
  • 生成偶数随机数

    我需要一个代码来仅生成随机偶数 2 100网上有生成随机数的教程 但它们有奇数和偶数 请理解我只需要生成偶数 1 生成数字1 50 2 将所有数字乘以2 所有数字乘以 2 都是偶数
  • Selenium 使用相对 XPath 定位器显式等待

    将 Selenium WebDriver 与 Python 3 4 结合使用 我正在编写一个抓取工具 并使用相对于某些非根祖先元素的 XPath 来定位元素 如下所示 ancestor element driver find element