运行Chrome驱动程序(作为脚本和来自python REPL)的Windows 10上运行Python 2.7的Selenium无法通过部分链接文本找到元素,我不知道为什么。当我查看相关网页的源代码时,整个页面中只有WO20
的一个实例,它位于链接中,但是selenium会返回no such element
。
以下是一个示例(WO20
位于href
之后):
<a id="resultTable:0:resultListTableColumnLink" name="resultTable:0:resultListTableColumnLink" href="detail.jsf?docId=WO2015102036&recNum=1&office=&queryString=FP%3A%28JP2014005719%29&prevFilter=&sortOption=Pub+Date+Desc&maxRec=3" target="_self"><span class="notranslate"> WO/2015/102036</span></a>
该页面还有一些其他链接,但我需要的是唯一一个具有字符组合WO20
的链接,因此理论上这应该很容易识别。我的猜测是,selenium没有将此视为一个链接,这就是partial_link_text
无效的原因。我已经尝试使用xpath
(成功),但问题是返回表中的第n个链接,我需要的链接(我正在处理多个文档)不在固定位置
答案 0 :(得分:4)
实际上,没有包含WO20
的链接文字!我认为您将链接文本与href
元素的<a>
属性混淆。您可以通过链接文本/部分链接文本找到目标元素,并使用以下代码:
driver.find_element_by_link_text('WO/2015/102036')
或
driver.find_element_by_partial_link_text('WO/20')
此XPaths
也适用:
driver.find_element_by_xpath('//a[contains(@href, "WO20")]')
driver.find_element_by_xpath('//a[contains(text(), "WO/20")]')