单击带有selenium-webdriver的复选框

时间:2015-09-07 21:17:22

标签: python python-3.x selenium tumblr webautomation

我正在使用tumblr测试我的应用程序,我必须在执行程序时登录和注销。在这样做时,我无法点击一个不断弹出的复选框。如何在python中使用selenium-webriver点击它?

我尝试过选择xpaths,... by_ids和by_classes,它们无法正常工作,所以现在我尝试使用鼠标坐标来物理点击该项目。 (这是在tumblr登录页面,fyi)

enter image description here

上面是我想要选择的项目的html。

(EDIT :) 我有以下选择器:

#checkbox = driver.find_element_by_id("recaptcha-anchor")
#checkbox = driver.find_element_by_id("g-recaptcha") 
#driver.find_element_by_xpath("//*[@id='recaptcha-token']")
#driver.find_element_by_css_selector("#recaptcha-anchor")
#driver.find_element_by_xpath("//*[@id='recaptcha-anchor']")
#driver.find_element_by_id("recaptcha-token").click()
#driver.find_element_by_class_name('rc-anchor-center-container')
#checkbox = driver.find_element_by_id("recaptcha-anchor")

4 个答案:

答案 0 :(得分:5)

我意识到这是一个旧线程,但我无法在其他任何地方找到答案。最后我发现如下:

注意1:这将勾选recaptcha框,但它无法解决,你仍然需要手动完成。

注意2:这是在macOS上,因此您可能需要在Windows上使用不同的chrome_path格式

from selenium import webdriver
from selenium.webdriver.common.keys import Keys

#modify line below to location of your chromedriver executable
chrome_path = r"/Users/Username/chromedriver"
driver = webdriver.Chrome(chrome_path)
driver.get("https://www.btcmarkets.net/login")

username = driver.find_element_by_id("userIdText")
username.send_keys("Us3rn4me")

password = driver.find_element_by_id("userPasswordText")
password.send_keys("Pa55w0rD")

#the line below tabs to the recaptcha tickbox and ticks it with the space bar
password.send_keys(Keys.TAB + Keys.TAB + " ")

答案 1 :(得分:0)

似乎这不是输入标签。因此,可能操纵UITableViewDataSource 属性并将其设置为class DetailViewContoller: UIViewController, UITableViewDelegate, UITableViewDataSource, UITextViewDelegate { ... ... ... override func viewDidLoad() { super.viewDidLoad() commentTableView.delegate = self commentTableView.dataSource = self 就可以了。更改属性值的唯一方法是JavaScriptExecutor。请尝试以下方法:

aria-checked

答案 2 :(得分:0)

这是一个适用于Java的简单示例:

driver.findElement(By.id("checkbox_id")).click();

在Python中,似乎是:

driver.find_element_by_id("checkbox_id").click()

答案 3 :(得分:0)

使用下面的代码可以找到ID为“ recaptcha-anchor”的复选框,然后单击它,但无法绕过它。将会弹出以下图片。

List<WebElement> frames = driver.findElements(By.tagName("iframe"));
    String winHanaleBefore = driver.getWindowHandle();
    driver.switchTo().frame(0);
driver.findElement(By.id("recaptcha-anchor")).click();
driver.switchTo().window(winHanaleBefore);