如何最好地选择正确的元素(Python 3,Selenium)

时间:2017-08-25 19:04:35

标签: python html selenium

我正在尝试使用Python 3和Selenium从页面中选择特定元素。

该页面包含一个长列表(数百个项目),这些列表的格式如下:

enter image description here

此表的html如下所示:

enter image description here

当我展开我试图点击的特定项目的元素时,它看起来像这样(链接因隐私而模糊):

enter image description here

到目前为止,我一直在做的是使用

搜索我需要的元素
titleField = 'Zombie Apocalypse'   
searchBuilder = "//*[contains(text(), '" + titleField + "')]"
searchForBook = browser.find_elements_by_xpath(searchBuilder)
searchForBook[0].click()

在某些时候有效。当有两个具有相同名称的项目,或者如果标题中有撇号时,我遇到了问题,有时我无法弄清楚为什么它根本不起作用。

是否有更好的方法从该表中选择单个元素而不是我使用的方式?我会提前提供该项目的标题,但不是ID号。身份证号码是我试图抓的信息。

如果搜索返回项目的URL,我也可以使用它,因为ID号包含在该URL中,所以我可以从那里拉出来。但标题不在URL中,所以我不知道如何搜索它。

1 个答案:

答案 0 :(得分:0)

在将文本插入XPath表达式之前,应引用该文本。这将为xpath表达式适当地编码yoyr字符串。请注意," quoteattr" ed stings包括'"

from xml.sax.saxutils import quoteattr
titleField = quoteattr('Zombie Apocalypse')  # But may contain XML markup chars
searchBuilder = "//*[contains(text(), " + titleField + ")]"
searchForBook = browser.find_elements_by_xpath(searchBuilder)
searchForBook[0].click()