簡體   English   中英

我如何 select selenium 中沒有 ID/text_link/name 的元素?

[英]How do I select the an element without an ID/text_link/name in selenium?

網站的 HTML

我想要的元素的 HTML 代碼 select:

   <a href="../s-reminderNotice.asp?fname=b%2D3c%2DpLessonBooking%2Easp%3Flimit%3Dpl" class="sidelinkbold" 
   target="mainFrame" 
   onmouseover=" window.status='Practical Training Booking'; 
   return true" onmouseout="window.status=' ';
   return true">Booking without Fixed Instructor</a>

我想 select 這個“沒有固定教練的預訂”的元素; 但是這個元素沒有 ID/link_text/name。 如何將站點定向到 HREF。 有沒有辦法使用 xpath 來定位它,該元素位於網站左側的列中,因此還有許多其他相同的 class 元素。 (見圖)

我試過了,它返回了:

AttributeError: 'WebDriver' object has no attribute 'findElement'

代碼:

driver.findElement(By.xpath("//a[@href='THE LINK']")).click();

解決了; 元素在 IFRAME 中; 必須切換框架以訪問元素

AttributeError: 'WebDriver' object has no attribute 'findElement'

您正在使用 python 所以驅動程序沒有 findElemnt 方法,它是 find_Element

https://www.selenium.dev/selenium/docs/api/py/webdriver_remote/selenium.webdriver.remote.webdriver.html?highlight=webdriver%20class#selenium.webdriver.remote.webdriver.WebDriver.find_element_by_class_name

use:

    driver.find_element(By.XPATH("//a[contains(string(),'Booking without Fixed Instructor')]")

要單擊文本為Booking without Fixed Instructor的元素,您可以使用以下任一Locator Strategies

  • 使用link_text

     driver.find_element(By.LINK_TEXT, "Booking without Fixed Instructor")
  • 使用partial_link_text

     driver.find_element(By.PARTIAL_LINK_TEXT, "Booking without Fixed Instructor").click()
  • 使用css_selector

     driver.find_element(By.CSS_SELECTOR, "a.sidelinkbold[href*='s-reminderNotice']").click()
  • 使用xpath

     driver.find_element(By.XPATH, "//a[@class='sidelinkbold' and contains(@href, 's-reminderNotice')][contains(., 'Booking without Fixed Instructor')]").click()

所需元素是動態元素,因此理想情況下,單擊需要為element_to_be_clickable()誘導WebDriverWait的元素,您可以使用以下任一Locator Strategies

  • 使用LINK_TEXT

     WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.LINK_TEXT, "Booking without Fixed Instructor"))).click()
  • 使用PARTIAL_LINK_TEXT

     WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.PARTIAL_LINK_TEXT, "Booking without Fixed Instructor"))).click()
  • 使用CSS_SELECTOR

     WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "a.sidelinkbold[href*='s-reminderNotice']"))).click()
  • 使用XPATH

     WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//a[@class='sidelinkbold' and contains(@href, 's-reminderNotice')][contains(., 'Booking without Fixed Instructor')]"))).click()
  • 注意:您必須添加以下導入:

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

參考

您可以在以下位置找到一些關於NoSuchElementException的相關討論:

試試這個 xpath:

//a[text()[contains(.,'Booking without Fixed Instructor')]]

暫無
暫無

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

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