簡體   English   中英

如何使用 Selenium 和 Python 單擊選項卡元素

[英]How to click on a tab element using Selenium & Python

我知道已經有類似的問題,但這些答案都沒有幫助我。

我在以下方面遇到了一些問題。 我有以下標簽:

在此處輸入圖片說明

該特定部分的 HTML 代碼如下所示:

<td class="Tab1TblSelTd"><div class="Tab1SelTxtNew" title="Current Selection: Common Tasks">Common Tasks</div></td>
<td><a href="../task/Home?Home.tabCommon.TabHref=1&amp;jato.pageSession=AKztAAVzcgARamF2YS51dGlsLkhhc2hNYXAFB9rBwxZg0QMAAkYACmxvYWRGYWN0b3JJAAl0aHJlc2hvbGR4cD9AAAAAAAAMdwgAAAAQAAAABHQADGN1cnJlbnRSZWFsbXQAAS90ABRDQ1RhYnMuU2VsZWN0ZWRUYWJJZHQAATB0ABVvcGVuc3NvLlNlbGVjdGVkVGFiSWR0AAEwdAASQ3VycmVudFByb2ZpbGVWaWV3dAABL3g$" name="Home.tabCommon.TabHref" class="Tab1Lnk" title="Click to configure access control" onmouseover="window.status='Click to configure access control'; return true" onmouseout="window.status=''; return true" onblur="window.status=''; return true" onfocus="window.status='Click to configure access control'; return true">Access Control</a></td>
<td><a href="../task/Home?Home.tabCommon.TabHref=2&amp;jato.pageSession=AKztAAVzcgARamF2YS51dGlsLkhhc2hNYXAFB9rBwxZg0QMAAkYACmxvYWRGYWN0b3JJAAl0aHJlc2hvbGR4cD9AAAAAAAAMdwgAAAAQAAAABHQADGN1cnJlbnRSZWFsbXQAAS90ABRDQ1RhYnMuU2VsZWN0ZWRUYWJJZHQAATB0ABVvcGVuc3NvLlNlbGVjdGVkVGFiSWR0AAEwdAASQ3VycmVudFByb2ZpbGVWaWV3dAABL3g$" name="Home.tabCommon.TabHref" class="Tab1Lnk" title="Click to go to Federation" onmouseover="window.status='Click to go to Federation'; return true" onmouseout="window.status=''; return true" onblur="window.status=''; return true" onfocus="window.status='Click to go to Federation'; return true">Federation</a></td>
<td><a href="../task/Home?Home.tabCommon.TabHref=4&amp;jato.pageSession=AKztAAVzcgARamF2YS51dGlsLkhhc2hNYXAFB9rBwxZg0QMAAkYACmxvYWRGYWN0b3JJAAl0aHJlc2hvbGR4cD9AAAAAAAAMdwgAAAAQAAAABHQADGN1cnJlbnRSZWFsbXQAAS90ABRDQ1RhYnMuU2VsZWN0ZWRUYWJJZHQAATB0ABVvcGVuc3NvLlNlbGVjdGVkVGFiSWR0AAEwdAASQ3VycmVudFByb2ZpbGVWaWV3dAABL3g$" name="Home.tabCommon.TabHref" class="Tab1Lnk" title="Click to go to Configuration" onmouseover="window.status='Click to go to Configuration'; return true" onmouseout="window.status=''; return true" onblur="window.status=''; return true" onfocus="window.status='Click to go to Configuration'; return true">Configuration</a></td>
<td><a href="../task/Home?Home.tabCommon.TabHref=5&amp;jato.pageSession=AKztAAVzcgARamF2YS51dGlsLkhhc2hNYXAFB9rBwxZg0QMAAkYACmxvYWRGYWN0b3JJAAl0aHJlc2hvbGR4cD9AAAAAAAAMdwgAAAAQAAAABHQADGN1cnJlbnRSZWFsbXQAAS90ABRDQ1RhYnMuU2VsZWN0ZWRUYWJJZHQAATB0ABVvcGVuc3NvLlNlbGVjdGVkVGFiSWR0AAEwdAASQ3VycmVudFByb2ZpbGVWaWV3dAABL3g$" name="Home.tabCommon.TabHref" class="Tab1Lnk" title="Click to go to Sessions" onmouseover="window.status='Click to go to Sessions'; return true" onmouseout="window.status=''; return true" onblur="window.status=''; return true" onfocus="window.status='Click to go to Sessions'; return true">Sessions</a></td>
</tr>
</table>

我想點擊Access Control

這就是我想要使用的:

wait.until(ec.presence_of_element_located((By.LINK_TEXT, 'Access Control'))).click()

顯然發現元素沒問題,但它沒有點擊它。 沒有任何異常或任何類型的消息,它只是不單擊它。

我以前在其他鏈接上使用過這種方法,它沒有問題,所以我很確定我一定在這里做錯了什么。

你能幫我嗎?

謝謝!

根據您共享的HTML以使用文本作為訪問控制調用元素上的click()而不是使用方法presence_of_element_located()您需要使用方法element_to_be_clickable()並且您可以使用以下任一解決方案:

  • 使用LINK_TEXT

     WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.LINK_TEXT, "Access Control"))).click()
  • 使用CSS_SELECTOR

     WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "a.Tab1Lnk[title$='access control']"))).click()
  • 使用XPATH

     WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//a[@class='Tab1Lnk'][contains(@title,'access control')]"))).click()

注意:您必須添加以下導入:

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC

嘗試單擊父 td 元素而不是 xpath:

//td[./a[.='Access Control']]

暫無
暫無

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

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