我正在使用Selenium python,并尝试了十多种方法来从span标记中找到可点击的链接元素,但未成功。我尝试通过链接文本,部分链接文本和其他研究建议使用xpath。
最近3次尝试使用:
browser.find_element_by_link_text("Web Time Clock-Eastern").click()
element = browser.find_element_by_partial_link_text('Clock-Eastern')
browser.wait.until(EC.element_to_be_clickable((By.XPATH, '//a[@span]/html/body/div[6]/div[1]/div[1]/div[1]/div/div/div[4]/div[2]button'))).click()
我在下面提供了被检查元素html的图像:
我希望找到一个我可以通过click方法打开相应网页的元素。
答案 0 :(得分:1)
对于click()
的元素,您必须为element_to_be_clickable()
引入 WebDriverWait ,并且可以使用以下任一解决方案:
使用CSS_SELECTOR
:
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "div.cardLinks a[href*='php/timeclock/WEB'] > span"))).click()
使用XPATH
:
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//div[@class='cardLinks']//a[contains(@href, 'php/timeclock/WEB')]/span[text()='Web Time Clock-Eastern']"))).click()
注意:您必须添加以下导入:
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
答案 1 :(得分:0)
尝试下面的xpath。
//span[normalize-space(.)='Web Time Clock-Eastern']/parent::a
答案 2 :(得分:0)
使用XPath的主要原因之一是当您对要定位的元素没有合适的id或name属性。
browser.find_element_by_xpath("//div[@class='cardLinks']/div/a").click()