首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Selenium:复杂的XPath示例

Selenium:复杂的XPath示例
EN

Stack Overflow用户
提问于 2019-01-30 23:24:01
回答 2查看 134关注 0票数 2

我需要在Selenium代码中找到一个包含XPath的节点以实现自动化。问题是,需要选择的节点不包含用于标识的信息,但目标节点的父节点的后代节点包含用于标识的信息。

代码语言:javascript
运行
复制
<object>...</object>

<object>
    <div>Name</div>
    <target></target>
</object>

<object>...</object>

为了简化上面的情况。有多个“对象”节点,并且仅通过“名称”来区分彼此。虽然我们不能在XPath中使用括号,但如何使用driver.find_element_by_xpath()方法选择该节点?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-01-30 23:32:51

如果我对您的问题理解正确,下面的XPath表达式可能就是您要查找的表达式:

代码语言:javascript
运行
复制
//div[text()="Name"]/../target

这实际上是以具有文本内容Namediv为目标,使用..跳转到其父节点,然后选择节点类型为target的子节点。

如果target节点不是父节点的直接子节点,下面的代码将在任何深度查找父节点的后代的target节点(请注意,唯一的区别是现在target前面有两个斜杠):

代码语言:javascript
运行
复制
//div[text()="Name"]/..//target
票数 2
EN

Stack Overflow用户

发布于 2019-01-31 00:07:59

如果你想做泛型函数,并且想在每个time.Try中传递你的参数。

代码语言:javascript
运行
复制
def fxpath(varstring):
    Xpathelement = "//div[text()='{}']/../target".format(varstring)
    driver.find_element_by_xpath(Xpathelement)

fxpath('Name')
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54443936

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档