使用Selenium和Python双击文本

时间:2017-03-17 19:34:09

标签: python selenium

如何让Selenium双击' Res。'来自下面的HTML:

<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>

我很接近,当我运行以下代码时:

word = browser.find_element_by_xpath("//*[contains(text(), 'Res.')]")
actionChains = ActionChains(browser)
actionChains.double_click(word).perform()

&#39;心血管&#39;是在网站上双击的内容。 如何使我的元素更具体,以便双击Res? 我的最终目标是突出文本,但我首先需要让硒指向正确的位置。

更新 当我打印元素的文本时它是正确的但问题是句子中每个单词的位置是相同的。

>>> print(word.text)
Res.
>>> print(word.location)
{'x': 33, 'y': 117}

如果我将元素设置为单词&#39; Cardiovasc&#39;这是在#Res;&#39;之前。

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']")

2 个答案:

答案 0 :(得分:0)

为了选择您可能尝试的特定<xs:element name="Records"> <xs:complexType> <xs:sequence> <xs:element name="Record" maxOccurs="unbounded"> <xs:complexType> <xs:attribute name="issuance-date" type="xs:dateTime"/> <xs:attribute name="last-update-date" type="xs:dateTime"/> <xs:attribute name="last-renewal-date" type="xs:dateTime"/> </xs:complexType> </xs:element> </xs:sequence> <xs:attribute name="content-date" type="xs:dateTime"/> <xs:assert id="plausibility-issuance-date-plausibility" test="empty(Record[@issuance-date ge ../@content-date])"/> </xs:complexType> </xs:element> 元素:

tspan

或直接测试内容(忽略任何前导/尾随空格):

word = browser.find_element_by_xpath("//tspan[contains(., 'Res.')]")

答案 1 :(得分:0)

我通过更改Selenium的版本并更改为旧版本的Firefox来修复此问题。另外,我必须在我的'2015年初'MacbookAir而不是我的2017 MacbookPro上运行此代码(此问题可能通过设置屏幕分辨率来解决)。

以下是我使用的版本:

Selenium 3.1.0

Firefox 47.0.2

Gecko Driver(我在环境中安装了v0.12-15。)