问题描述
我要选择的元素的HTML代码:
<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>
我想选择这个“没有固定教练的预订”的元素;但是这个元素没有 ID/link_text/name。如何将站点定向到 HREF。有没有办法使用xpath来定位它,该元素在网站左侧的列中,因此还有许多其他同类元素。 (见图)
我试过了,它又回来了:
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')]")
,
要点击文本为无固定讲师预订的元素,您可以使用以下任一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()
所需元素是动态元素,因此理想情况下,单击需要为 WebDriverWait 引入 element_to_be_clickable()
的元素,您可以使用以下任一 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,'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 的相关讨论:
- selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element while trying to click Next button with selenium
- selenium in python : NoSuchElementException: Message: no such element: Unable to locate element
试试这个 xpath:
//a[text()[contains(.,'Booking without Fixed Instructor')]]