无法通过Python中的Selenium单击复选框
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了无法通过Python中的Selenium单击复选框,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2123字,纯文字阅读大概需要4分钟。
内容图文
![无法通过Python中的Selenium单击复选框](/upload/InfoBanner/zyjiaocheng/809/886c25b0d43d463b9ff1994109601c7f.jpg)
为什么我无法通过Python中的Selenium单击页面https://realty.yandex.ru/add上的以下复选框?
import traceback
import selenium.webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
import selenium.webdriver.support
import selenium.webdriver.support.ui
explicit_wait_timeout_secs = 10
def wait_for_element_presence(driver, find_type, web_element):
return selenium.webdriver.support.ui.WebDriverWait(driver, explicit_wait_timeout_secs).until(EC.presence_of_element_located((find_type, web_element)))
def wait_for_element_clickable(driver, find_type, web_element):
return selenium.webdriver.support.ui.WebDriverWait(driver, explicit_wait_timeout_secs).until(EC.element_to_be_clickable((find_type, web_element)))
try:
driver = selenium.webdriver.Chrome()
driver.get('https://realty.yandex.ru/add/')
# element = wait_for_element_clickable(driver, By.NAME, 'lift') # TimeoutException
element = wait_for_element_presence(driver, By.NAME, 'lift') # WebDriverException: Message: unknown error: Element is not clickable at point (203, 899). Other element would receive the click: <span class="checkbox__box">...</span>
element.click()
except Exception:
print('ERROR: \n' + traceback.format_exc())
try:
driver.quit()
except Exception:
pass
如果我正在尝试等待此元素的“可点击性”,它会给我TimeoutException错误.如果我正在尝试等待元素的存在,它会给我“元素不可点击”错误.
但是,我可以通过Javascript单击此复选框:
driver.execute_script("document.getElementsByName('lift')[0].click();")
它也适用于Firefox btw.
为什么?我究竟做错了什么?我该如何解决?
提前致谢.
解决方法:
您需要单击span标记,该标记是input =“lift”的输入标记的父级的父级:
element = driver.find_element_by_xpath('//span[span/input[@name="lift"]]')
element.click()
适用于Chrome和Firefox的我:
为了安全起见,您还可以在点击之前使用scroll to an element:
def scroll_element_into_view(driver, element):
"""Scroll element into view"""
y = element.location['y']
driver.execute_script('window.scrollTo(0, {0})'.format(y))
element = driver.find_element_by_xpath('//span[span/input[@name="lift"]]')
scroll_element_into_view(driver, element)
element.click()
内容总结
以上是互联网集市为您收集整理的无法通过Python中的Selenium单击复选框全部内容,希望文章能够帮你解决无法通过Python中的Selenium单击复选框所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。