我有一个要自动化的网站,但找不到与硒相关的特定链接来单击。它看起来像网站上的链接,但是当我使用镶边的“检查”功能时,它看起来像是一个按钮(???)。我已经尝试过复制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"
我的智慧到此为止。任何帮助将不胜感激。
谢谢!
答案 0 :(得分:0)
如果您不打算进行任何I18N / L10N测试,则可以坚持使用No Preference
文本,在这种情况下,选择器将是:
//button[text()='No Preference']
其他选项基本上是相同的,但是它查找的不是文本,而是track
HTML attribute:
更多信息:
答案 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')]")