![](/img/trans.png)
[英]How do I select a web element with no ID through Selenium/Python
[英]How do I select the an element without an ID/text_link/name in selenium?
我想要的元素的 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
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.