使用Selenium和Python双击文本
如何让Selenium从下面的html双击“Res.”使用Selenium和Python双击文本,python,selenium,Python,Selenium,如何让Selenium从下面的html双击“Res.” <g class = "text"> <text x="0" y="0"> <tspan x="24" y="43" data-chunk-id="0">Cardiovasc </tspan> <tspan x="93.025390635" y="43" data-chunk-id="1">Res. </tspan> &l
<g class = "text">
<text x="0" y="0">
<tspan x="24" y="43" data-chunk-id="0">Cardiovasc </tspan>
<tspan x="93.025390635" y="43" data-chunk-id="1">Res. </tspan>
</text>
“Cardiovasc”是在网站上双击的内容。
如何使我的元素更具体,使其双击分辨率。?
我的最终目标是突出文本,但我首先需要让selenium指向正确的位置
更新
当我打印元素的文本时,它是正确的,但问题是句子中每个单词的位置都是相同的
>>> print(word.text)
Res.
>>> print(word.location)
{'x': 33, 'y': 117}
如果我将元素设置为单词'Cardiovasc',它直接位于'Res.'
word = browser.find_element_by_xpath("//*[contains(text(), 'Cardiovasc')]")
我发现它指向正确的单词,但位置相同:
>>> print(word.text)
Cardiovasc
>>> print(word.location)
{'x': 33, 'y': 117}
我还尝试在唯一id上查找元素,但得到了相同的结果:
word = browser.find_element_by_xpath("//*[@data-chunk-id='1']")
要选择特定的
tspan
元素,您可以尝试:
word = browser.find_element_by_xpath("//tspan[contains(., 'Res.')]")
或直接测试内容(忽略任何前导/尾随空格):
我通过更改Selenium版本和Firefox的旧版本解决了这个问题。此外,我必须在我的“2015年初”MacbookAir上运行此代码,而不是在2017年的MacbookPro上运行此代码(此问题可能可以通过设置屏幕分辨率来解决) 以下是我使用的版本: 硒3.1.0 火狐47.0.2
Gecko驱动程序(我在环境中安装了v0.12-15)。感谢您的响应。但是他们都给出了类似的错误消息:selenium.common.exceptions.NoSuchElementException:message:没有这样的元素:无法定位元素:{“method”:“xpath”,“selector”:“//tspan[normalize space(.)='Res.]”}@Ziska220是真正的
tspan
?啊,它在SVG图像中-这可能有帮助:/*[local-name()='SVG']//tspan[normalize space(.)='Res.]
Hmm仍然给出错误。它也在“g”和“text”元素中。我应该包括这些吗?/
应该考虑到这一点(它选择任何后代,而不仅仅是直接子代),但似乎必须更加详细:/*[local-name()='svg']/*[local-name()='tspan'并规范化空格(.)='Res.]
word = browser.find_element_by_xpath("//tspan[contains(., 'Res.')]")
word = browser.find_element_by_xpath("//tspan[normalize-space(.)='Res.']")