如何解决如何使用Selenium WebDriver获取没有类名和ID的元素
HTML:
<a title="ITC" href="javascript:void(0);" onclick="TPComView("2020-2021","39");">ITC</a>
我尝试使用cssSelector和xpath,但显示如下错误:
selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element
解决方法
您可以使用find_element_by_xpath函数。
driver.find_element_by_xpath('//a[@href="'+url+'"]')
,
要找到元素,可以使用title
,onclick
或/和innerText
属性,并且可以使用以下Locator Strategies中的任何一个:
-
使用
link_text
:element = driver.find_element_by_link_text("ITC")
-
使用
css_selector
:element = driver.find_element_by_css_selector("a[title='ITC'][onclick^='TPComView']")
-
使用
xpath
:element = driver.find_element_by_xpath("//a[@title='ITC' and text()='ITC']")
理想情况下,要找到需要为visibility_of_element_located()
引出WebDriverWait的元素,可以使用以下任一Locator Strategies:
-
使用
LINK_TEXT
:element = WebDriverWait(driver,20).until(EC.visibility_of_element_located((By.LINK_TEXT,"ITC"))).click()
-
使用
CSS_SELECTOR
:element = WebDriverWait(driver,20).until(EC.visibility_of_element_located((By.CSS_SELECTOR,"a[title='ITC'][onclick^='TPComView']")))
-
使用
XPATH
:element = WebDriverWait(driver,20).until(EC.visibility_of_element_located((By.XPATH,"//a[@title='ITC' and text()='ITC']")))
-
注意:您必须添加以下导入:
from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.common.by import By from selenium.webdriver.support import expected_conditions as EC
参考文献
您可以在NoSuchElementException上找到一些相关的讨论:
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。