网页在checkbox的位置设置了伪元素::before,selenium如何将其定位并且点选?

在模拟点击登录网站的时候有一个点选框,查看元素发现这个选框是由::before这个伪元素实现的。

img

我使用平台一些其他答案的解决方案对元素进行定位
browser.find_element(By.CSS_SELECTOR,'div.joinTermsRequired>label').click()

结果无法定位到对应的 checkbox选框,实际定位到了a节点下面的<隐私政策>元素。
我希望可以找到一个方法直接定位到这个::before的伪元素,然后模拟点选。

用selenium中的元素.click()有时是点击不到真正元素的, 这时可以用execute_script()js代码进行点击

label = browser.find_element(By.CSS_SELECTOR,'div.joinTermsRequired>label')
browser.execute_script('arguments[0].click()',label)

如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!

img

点label前面checkbox试试

browser.find_element(By.CSS_SELECTOR,'#joinTermsRequired input[name="joinTermsRequired"]').click()

还不行可以执行js代码来实现点击,浏览器控制台测试正常

img



browser.execute_script('document.querySelector("#joinTermsRequired input[name=joinTermsRequired]").click()')

img

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632