硒复选框无法在python中运行

时间:2019-05-27 13:23:07

标签: python selenium checkbox css-selectors webdriverwait

https://agent.loadbook.in/#/login 当我转到注册表单时,该表单上有一个复选框,因为我同意该条件。这是一个输入标签复选框。当我通过ID选择代码时,以及当我执行click或send_key提交其显示复选框时,都无法点击。

以下所有方法均无效

driver.find_element_by_xpath('//div[@class="switch__container"]//input').click()

driver.find_element_by_xpath('//div[@class="switch__container"]//input').send_keys(Keys.ENTER)

driver.find_element_by_xpath('//div[@class="switch__container"]//input').submit()

driver.find_element_by_xpath('//div[@class="switch__container"]//input').send_keys("after")

driver.find_element_by_xpath('//div[@class="switch__container"]//label').click()



driver = webdriver.Chrome(options=chrome_options)
driver.get("https://agent.loadbook.in/#/login")


driver.find_element_by_partial_link_text("Create an account").click()

尝试:

driver.find_element_by_xpath('//div[@class="switch__container"]//input').click()
# driver.find_element("name","username").send_keys("test")
# driver.find_element("name","email").send_keys("test@test.com")
# driver.find_element("name","phone").send_keys("99999999")
# driver.find_element("name","password").send_keys("12345")
  

除了NoSuchElementException作为例外:       打印(“找不到”)

     

selenium.common.exceptions.ElementNotVisibleException:消息:   元素不可交互

2 个答案:

答案 0 :(得分:0)

您需要等待,以便使用Selenium的Explicit Wait功能在DOM中显示元素。

  1. 使用WebDriver.get()函数打开页面

    driver.get("https://agent.loadbook.in/#/login")
    
  2. Click“创建帐户”链接:

    driver.find_element_by_link_text("Create an account").click()
    
  3. Wait,直到复选框加载并变为可点击为止:

    WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.CLASS_NAME, "switch_div")))
    
  4. 单击复选框:

     driver.find_element_by_class_name("switch_div").click()
    

更多信息:How to use Selenium to test web applications using AJAX technology

答案 1 :(得分:0)

在与文本关联的复选框上click()我同意条款和条件和隐私政策,您必须为引入 WebDriverWait 元素可点击,您可以使用以下解决方案:

  • 代码块:

    from selenium import webdriver
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.support import expected_conditions as EC
    
    options = webdriver.ChromeOptions() 
    options.add_argument("start-maximized")
    # options.add_argument('disable-infobars')
    driver = webdriver.Chrome(chrome_options=options, executable_path=r'C:\WebDrivers\chromedriver.exe')
    driver.get("https://agent.loadbook.in/#/login")
    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.LINK_TEXT, "Create an account"))).click()
    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "label[for='switch-shadow']"))).click()
    
  • 浏览器快照:

Iagree