单击selenium webdri的复选框

2024-04-16 06:01:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在用tumblr测试我的应用程序,我必须在执行过程中登录和退出。这样做的时候,我很难点击一个不断弹出的复选框。如何在python中使用selenium webriver来单击它?

我试过选择xpath,…by_id,and by_classes,它们都不起作用,所以现在我试着用鼠标的坐标物理地单击该项。(这是tumblr登录页面,仅供参考)

enter image description here

上面是我试图选择的项目的html。

(编辑:) 我有以下选择器:

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

Tags: tokenid应用程序by过程driverseleniumtumblr
3条回答

我意识到这是一个老线索,但我找不到其他地方的答案。最后我想起来了。

注1:这将勾选recaptcha框,但它不会解决问题,您仍然需要手动完成。

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

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

下面是一个简单的Java示例:

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

在Python中,似乎是:

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

似乎这不是一个输入标记。所以,也许操作aria-checked属性并将其设置为true就可以了。更改属性值的唯一方法是JavaScriptExecutor。请尝试以下操作:

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

相关问题 更多 >