我正在使用Selenium python 3,并且已经尝试过,但是在寻找可点击链接元素xpath时需要帮助。
我在xpath上的最后一次尝试显示了1个匹配项,但仍然无法提取元素:
elem_available=browser.find_element_by_xpath("//a[contains(@href,'#')] //parent::td[@class='noSCL']//parent::tr['@']//parent::tbody['@']//parent::table[@class='status-buttons']//parent::div[@id='status-buttons-on-break']")
答案 0 :(得分:0)
explicit-waits-显式等待是您定义的代码,用于在继续执行代码之前先等待特定条件发生
browser.find_element_by_link_text("Available").click()
OR
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.LINK_TEXT, "Available"))).click()
答案 1 :(得分:0)
要使用WebDriverWait
和element_to_be_clickable
单击元素。请尝试以下xpath
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//div[@id='status-buttons-work-offline']//table[@class='status-buttons']//tr//td//a[contains(.,'Available')]"))).click()
您需要使用以下导入。
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
答案 2 :(得分:0)
所需元素是启用了JavaScript的元素,因此对元素click()
进行LINK_TEXT
诱使 WebDriverWait 以便使元素可点击您可以使用以下任一解决方案:
使用WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.LINK_TEXT, "Available"))).click()
:
CSS_SELECTOR
使用WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "div#status-buttons-work-offline > table.status-buttons > tr > td a[onclick^='AgentStatusController']"))).click()
:
XPATH
使用WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//div[@id='status-buttons-work-offline']/table[@class='status-buttons']/tr/td//a[starts-with(@onclick, 'AgentStatusController') and contains(.,'Available')]"))).click()
:
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
注意:您必须添加以下导入:
SELECT CASE C WHEN 1 THEN A ELSE B END FROM T WHERE C IN (1,2);