如何使用硒python单击href javascript:void(0)和hidefocus = true?

时间:2019-07-13 20:49:17

标签: python selenium xpath css-selectors webdriverwait

如何单击href? 我已经尝试过

driver.find_element_by_xpath("/div/a[@id='switcher_plogin']")

我遇到了这样的错误:enter image description here 我将不胜感激。谢谢。

3 个答案:

答案 0 :(得分:0)

点击链接 使用WebDriverWaitelement_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)

  1. 请确保该链接不属于iframe,否则您必须先调用WebDriver.switch_to_frame函数才能将上下文更改为链接所在的iframe。
  2. 请确保该链接不属于Shadow DOM,否则必须首先使用ShadowRoot函数来找到相关的execute_script元素,并将结果转换为WebElement并使用WebElement的find()函数来找到链接
  3. 链接可能没有立即出现在DOM中,因此您可能需要引入Explicit Wait
  4. 如果没有其他ID attribute个元素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

中找到相关的讨论