单击带有 selenium-webdriver 的复选框

Click a checkbox with selenium-webdriver

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

我试过 selecting xpaths、...by_ids 和 by_classes,它们不起作用,所以现在我尝试使用鼠标坐标以物理方式单击该项目。 (这是在 tumblr 登录页面上,仅供参考)

以上是我要 select 的项目的 html。

(编辑:) 我有以下 select 或:

#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")

这似乎不是输入标签。因此,可能操纵 aria-checked 属性并将其设置为 true 即可。更改属性值的唯一方法是 JavaScriptExecutor。请尝试以下操作:

driver.execute_script("$('#recaptcha-anchor').setAttribute('aria-checked','true');")

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

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

在Python中,好像是:

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

我知道这是一个旧线程,但我在其他地方找不到答案。最后我想通了如下。

注意 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 + " ")

使用下面的代码可以找到id为"recaptcha-anchor"的checkbox并点击,但是无法绕过。将弹出以下图片。

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