driver.find_element_by_xpath("/div/a[@id='switcher_plogin']")
答案 0 :(得分:0)
点击链接
使用WebDriverWait
和element_to_be_clickable
以及以下选项。
Xpath :
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH,"//div[@id='bottom_qlogin']/a[@id='switcher_plogin']"))).click()
CSS选择器:
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR,"#bottom_qlogin #switcher_plogin"))).click()
您需要导入以下内容以执行上述代码。
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
答案 1 :(得分:0)
switcher_plogin
中的元素,您可能需要重新考虑locator strategy并坚持使用ID而不是XPath。 建议的代码更改:
替换此:
driver.find_element_by_xpath("/div/a[@id='switcher_plogin']")
与此:
WebDriverWait(driver, 10).until(expected_conditions.presence_of_element_located((By.ID, "switcher_plogin")))
参考文献:
答案 2 :(得分:0)
所需元素是启用了JavaScript的元素,因此要对元素click()
进行element_to_be_clickable()
,就需要为所需CSS_SELECTOR
引入 WebDriverWait ,您可以使用其中一个以下解决方案:
使用WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "a.link#switcher_plogin"))).click()
:
XPATH
使用WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, "//a[@class='link' and @id='switcher_plogin']"))).click()
:
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
注意:您必须添加以下导入:
not_my_data = set(dir())
注意:您可以在Selenium “selenium.common.exceptions.NoSuchElementException” when using Chrome
中找到相关的讨论