【问题标题】:Selenium doesn't click on certain elementsSelenium 不会点击某些元素
【发布时间】:2014-06-16 06:13:40
【问题描述】:

我正在尝试单击并取消选中此Website 上的某些复选框,我想取消选中

  1. 协议下的SOCKS4/5
  2. 慢和中在速度下
  3. 慢和中在连接时间下

所以最终结果看起来像:


这是我的代码:

from selenium import webdriver

driver = webdriver.Firefox()
driver.implicitly_wait(10)
base_url = "http://proxylist.hidemyass.com/"
driver.get(base_url)

driver.find_element_by_xpath("(//input[@name='pr[]'])[2]").click()
driver.find_element_by_name("sp[]").click()
driver.find_element_by_xpath("(//input[@name='sp[]'])[2]").click()
driver.find_element_by_name("ct[]").click()
driver.find_element_by_xpath("(//input[@name='ct[]'])[2]").click()

但此代码仅取消选中连接时间中的慢速和中等,但不会取消选中 1 和 2 中所述的复选框。这是为什么呢?

【问题讨论】:

    标签: python python-2.7 selenium


    【解决方案1】:

    看起来输入是隐藏的。输入后的跨度是可见的。我会尝试这样的事情:

    (//input[@name='pr[]'])[2]/following-sibling::span
    

    【讨论】:

    • 没有没有任何变化:(
    • 你用什么驱动?我们对隐藏在 Firefox Driver v. 28 iirc 中的样式复选框有类似的问题。
    • @limelights 我使用的是 firefox 29.0.1 顺便说一句,您是如何解决问题的?
    • @KDawG 我们还没有,我们还在等待新驱动程序的发布。不确定它是否已经更新。
    【解决方案2】:

    我已经设法取消选中 SOCKS4/5 输入使用

    a = driver.find_element_by_css_selector("input[value='2']")
    a.click()
    

    编辑:更通用的方法:

    fieldsets = driver.find_elements_by_css_selector('fieldset')
    protocol = [i for i in fieldsets if "protocol" in i.text.lower()][0]
    sock_input = protocol.find_element_by_css_selector('input[value="2"]')
    sock_input.click()
    

    您只需对“速度”和“连接时间”字段集实体重复前面的步骤

    【讨论】:

      猜你喜欢
      • 2016-06-08
      • 2017-04-16
      • 1970-01-01
      • 2015-06-13
      • 1970-01-01
      • 1970-01-01
      • 2021-05-01
      • 1970-01-01
      • 2018-03-14
      相关资源
      最近更新 更多