如何在硒中 select 没有 ID/text_link/name 的元素?
How do I select the an element without an ID/text_link/name in selenium?
HTML of the website
我要的元素的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 中;必须切换框架才能访问元素
要单击文本为 没有固定讲师的预订 的元素,您可以使用以下任一方法 :
使用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()
所需的元素是动态元素,因此理想情况下单击需要为 的元素=] 并且您可以使用以下任一项 :
使用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
参考资料
您可以在以下位置找到关于 的一些相关讨论:
AttributeError: 'WebDriver' object has no attribute 'findElement'
您正在使用 python,因此驱动程序没有 findElement 方法,它是 find_Element
use:
driver.find_element(By.XPATH("//a[contains(string(),'Booking without Fixed Instructor')]")
试试这个 xpath:
//a[text()[contains(.,'Booking without Fixed Instructor')]]
HTML of the website
我要的元素的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 中;必须切换框架才能访问元素
要单击文本为 没有固定讲师的预订 的元素,您可以使用以下任一方法
使用
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()
所需的元素是动态元素,因此理想情况下单击需要为
使用
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
参考资料
您可以在以下位置找到关于
AttributeError: 'WebDriver' object has no attribute 'findElement'
您正在使用 python,因此驱动程序没有 findElement 方法,它是 find_Element
use:
driver.find_element(By.XPATH("//a[contains(string(),'Booking without Fixed Instructor')]")
试试这个 xpath:
//a[text()[contains(.,'Booking without Fixed Instructor')]]