Selenium没有点击某些元素

时间:2014-06-16 06:13:41

标签: python python-2.7 selenium

我试图点击并取消选中此Website上的某些复选框,我想取消选中

  1. 协议下的 SOCKS4 / 5
  2. 在速度下
  3. 连接时间
  4. 最终结果如下:

    enter image description here


    这是我的代码:

    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()
    

    但是此代码仅在连接时间中取消选中慢速和中等,但未取消选中12中所述的复选框。这是为什么?

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

我设法使用

取消选中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()

您只需重复前面的步骤即可获得速度' &安培; '连接时间' fieldset实体