gpt4 book ai didi

html - 简单的 Xpath 难题

转载 作者:行者123 更新时间:2023-11-28 05:00:14 27 4
gpt4 key购买 nike

我正在尝试使用 Selenium 自动执行 Google 翻译网络界面(但无需了解 Selenium 即可理解此问题,只需要知道它会找到元素并单击它们即可)。我一直在选择要翻译的语言。

我无法打开下拉菜单,如下面的屏幕截图所示。

现在,我想选择“日语”。

这个 xpath 表达式有效:$b.find_element(:xpath,"//*[@id=':13']/div").click 但我宁愿有一个我可以只输入语言的名称。

这个 xpath 表达式也有效:$b.find_element(:xpath,"//*[contains(text(),'Japanese')]").click 但只要有页面上没有其他“日语”文本。

所以我试图缩小 xpath 的范围,但是当我尝试指定用于查找“日语”文本的路径时,表达式不再有效,我找不到元素:$b.find_element(:xpath,"//*div[@id='gt-sl-gms']/*[contains(text(),'Japanese')]").click

它也不再适用于原始 xpath:$b.find_element(:xpath,"//*div[@id='gt-sl-gms']/*[@id=': 13']/div").click这很奇怪,因为要下拉菜单,我使用了这个 xpath $b.find_element(:xpath,"//*[@id='gt-sl-gms']/*[contains( text(),'From:')]").click

所以并不是我的表达式中有两个通配符,也不是我的表达式太具体了。还有一些我遗漏的东西,我确信它真的很简单。

如有任何建议,我们将不胜感激。

编辑 其他我尝试失败的事情:

$b.find_element(:xpath,"//*/div[@id='gt-sl-gms']/*[@id=':13']/div").click$b.find_element(:xpath,"//*[@id='gt-sl-gms']/*[@id=':13']/div").click$b.find_element(:xpath,"//*[@id='gt-sl-gms']//*[@id=':13']/div").click

最佳答案

如果带“@id=':13'”的 div 是带“@id='gt-sl-gms”的 div 的后代你的 xpaht "//*[@id='gt-sl-gms']//*[@id=':13']/div"会工作。上面的 xpaht 期望 html 看起来有点像:

<div id="gt-sl-gms">
<div>
<div id=":13">
<div></div>
</div>
</div>
</div>

如果<div id="gt-sl-gms"> in not an ancestor(如我所料)你必须寻找一个“真正的”祖先,或者你可以使用 following (对于文档后面的节点)或 following-sibling(对于文档中后面与前面相同级别的节点。

关于html - 简单的 Xpath 难题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16782767/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com