如何使用chromedriver使用硒在网页中找到这些特定元素?

时间:2019-05-23 07:05:54

标签: python selenium-webdriver selenium-chromedriver

我有一个要自动化的网站,但找不到与硒相关的特定链接来单击。它看起来像网站上的链接,但是当我使用镶边的“检查”功能时,它看起来像是一个按钮(???)。我已经尝试过复制Xpath,但这是行不通的。

这是链接后面的HTML

<button ng-bind-html="::ListingCtrl.copy.planListing.noPreference" track="No Preference" ng-click="::ListingCtrl.enterNoPreference()" class="link ally-focus-within">No Preference</button>

它的Xpath是

//*[@id="mainContent"]/div/div/div/div[2]/ul/li[1]/h2/button

链接的文本为“无首选项”,因此也尝试了以下操作

elem_NoPreference = browser.find_element_by_xpath('//@track=\'No Preference\'')

但是我不确定引号转义字符是否正确。

我也尝试了以下失败

elem_NoPreference = browser.find_element_by_link_text('No Preference') <br>
elem_NoPreference = browser.find_element_by_class_name('link ally-focus-within') <br>
elem_NoPreference = browser .find_element_by_css_selector("button[class='link ally-focus-within']           

我应该提到以下内容在HTML中是唯一的。因此,如果有一种方法可以使用Xpath查找这些信息,

ListingCtrl.copy.planListing.noPreference 
ListingCtrl.enterNoPreference()
track = "No Preference"

我的智慧到此为止。任何帮助将不胜感激。

谢谢!

2 个答案:

答案 0 :(得分:0)

如果您不打算进行任何I18N / L10N测试,则可以坚持使用No Preference文本,在这种情况下,选择器将是:

//button[text()='No Preference']

enter image description here

其他选项基本上是相同的,但是它查找的不是文本,而是track HTML attribute

enter image description here

更多信息:

答案 1 :(得分:-1)

尝试使用此xpath:

elem_NoPreference = browser.find_element_by_xpath("//button[@track='No Preference']")

或者,如果要通过包含的文本选择元素:

elem_NoPreference = browser.find_element_by_xpath("//button[contains(.,'No Preference')]")