簡體   English   中英

python selenium find_element_by_link_text,元素存在但未找到

[英]python selenium find_element_by_link_text, element exists but not found

我正在嘗試使用 python 中的 selenium 單擊此鏈接:

<header class="row package-collapse">
    <h5 ng-bind="ctrl.getPackageHeader(package)" class="ng-binding">Package "1" - not yet downloaded</h5>
    <!-- ngIf: package.DownloadedAt -->
</header>

在嘗試了許多不同的替代方案之后,我終於設法通過遍歷鏈接來實現這一點,直到找到正確的文本,如下所示:

list = browser.find_elements_by_tag_name("h5")
for item in list:
    text = item.text
    if text == 'Package "1" - not yet downloaded':
        item.click()

好的,所以,它有效。 但是,如果我只是嘗試明顯的解決方案,為什么我會收到“無法定位元素”錯誤:

browser.find_element_by_link_text('Package "1" - not yet downloaded')

它就在那里,我正在看着它,所以我只是不明白我做錯了什么。 我也嘗試過使用部分鏈接文本在沒有“1”的情況下搜索它,使用單引號或雙引號,但我仍然得到“無法定位元素”。 沒有框架,沒有新的 windows 開口或任何東西。

是的,我發布這個是因為我是一個新手,不知道我在做什么,所以不需要詳細說明這一點,謝謝。 :)

這是因為by_link_text僅適用於<a>標簽。 對於其他標簽,您可以使用xpath

完全符合

find_element_by_xpath("//h5[.='Package \"1\" - not yet downloaded']")

對於部分文本

find_element_by_xpath("//h5[contains(., '\"1\" - not yet downloaded')]")

它在文檔中解釋說find_element_by_link_text僅適用於錨標記內的 href 文本,您指向 h5 標記並且“包“1”-尚未下載”不在錨標記中

如果您想使用文本處理您的 h5 元素,請在下面使用 xpath

driver.find_elements_by_xpath("//*[contains(text(), 'Package \"1\" - not yet downloaded')]")

find_element_by_link_text僅適用於鏈接。 即href

試試 find_element_by_partial_link_text。 “部分”在從公共網站提取信息方面發揮了重要作用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM