尝试使用Python+;XPath以单击突出显示的文本?

尝试使用Python+;XPath以单击突出显示的文本?,python,python-3.x,selenium,Python,Python 3.x,Selenium,对于编码和Python来说相当陌生,我尝试使用find\u element\u by\u xpath单击突出显示的文本“家庭市场打鼾下巴带” HTML代码: 家庭市场上的打鼾下巴带 正常价格:19.99美元 您的亚马逊价格:$1.99 你的总数:1.99美元 点击查看和购买 XPath有时获取速度很快,因为您可以从浏览器中获取,这就是为什么这么多人使用它的原因,但从长远来看,学习JavaScript和CSS选择器可以在未来的许多情况下帮助您。 也可以通过选择所有h2元素并使用纯JavaSc

对于编码和Python来说相当陌生,我尝试使用
find\u element\u by\u xpath
单击突出显示的文本
“家庭市场打鼾下巴带”

HTML代码:


家庭市场上的打鼾下巴带

正常价格:19.99美元 您的亚马逊价格:$1.99 你的总数:1.99美元 点击查看和购买


XPath有时获取速度很快,因为您可以从浏览器中获取,这就是为什么这么多人使用它的原因,但从长远来看,学习JavaScript和CSS选择器可以在未来的许多情况下帮助您。 也可以通过选择所有
h2
元素并使用纯JavaScript查找文本并将结果传递给python来完成上述操作:

link_you_search = br.execute_script('''
links= document.querySelectorAll("h2");
for (link of links) if (link.textContent.includes("Chin Strap")) return link;
 ''')
link_you_search.click()
或者,您也可以按类别选择:

link_you_search = br.execute_script('''
links= document.querySelectorAll(".productDiv");
for (link of links) if (link.textContent.includes("Chin Strap")) return link;
 ''')
link_you_search.click()
假设您的元素有一个
id
属性,通常通过
id
进行选择,这是最佳做法,因为它是最快的搜索,并且您应该只有一个元素具有该
id
,并且通常
id
在翻译等情况下不会经常更改,因此在您的情况下:

link_you_search = br.find_element_by_id('productTitle69507')
link_you_search.click()

请将您的代码和目标页面的相关部分作为文本分享到您的问题正文中。我添加了代码,其他图像可以在这里@Kas找到,在截图中显示HTML代码是一种不好的做法,请将它们作为文本内容添加到您的问题中。太好了,非常感谢!另外,我收到了你对这种不良做法的评论,我一定会确保我的下一篇文章符合适当的标准。
link_you_search = br.execute_script('''
links= document.querySelectorAll(".productDiv");
for (link of links) if (link.textContent.includes("Chin Strap")) return link;
 ''')
link_you_search.click()
link_you_search = br.find_element_by_id('productTitle69507')
link_you_search.click()