python+selenium 定位到元素,无法点击的解决方法

yipeiwu_com6年前Python基础

报错

selenium.common.exceptions.WebDriverException: Message: Element is not clickable at point (234.75, 22). Other element would receive the click: <img class="logo" src="/public/desktop/common/img/game_logo.png">

需要点击的按钮页面显示不了,需要下拉滚动条,能看到按钮了才能点

1、尝试下拉一段滚动条,让按钮能看到

js = "window.scrollTo(100,450)"
driver.execute_script(js)

driver.find_element_by_css_selector("div.loginForm>input#loginBtn").click()

OK,能点到了

2、不是下拉加载的页面,用方法一有点傻,尝试让滚动条定位到指定元素位置

the_loginBtn = driver.find_element_by_css_selector("div.loginForm>input#loginBtn")
ActionChains(driver).move_to_element(the_loginBtn).perform() 

driver.find_element_by_css_selector("div.loginForm>input#loginBtn").click()

ok,滚动到元素位置了。但是这个按钮在页面顶格显示,这个页面有导航栏,要点击的按钮被固定的导航栏挡住了。还是报错。

3、元素被覆盖,无法点击

用Enter代替click

driver.find_element_by_css_selector("div.loginForm>input#loginBtn").send_keys(Keys.ENTER)

要导入from selenium.webdriver.common.keys import Keys,不然用不了

发现用Enter代替click后,如果不是下拉加载的页面的话,不用下拉滚动条就能用enter点到

以上这篇python+selenium 定位到元素,无法点击的解决方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持【听图阁-专注于Python设计】。

相关文章

在Python中操作字典之setdefault()方法的使用

 setdefault()方法类似于get()方法,但会设置字典[键]=默认情况下,如果键不是已经在字典中。 方法 以下是setdefault()方法的语法: dict.s...

Python将列表中的元素转化为数字并排序的示例

本文实例讲述了Python中列表元素转为数字的方法。分享给大家供大家参考,具体如下: 有一个数字字符的列表: numbers = ['2', '4', '1', '3'] 想要把每...

详解django2中关于时间处理策略

详解django2中关于时间处理策略

一、django中数据模型关于时间字段的认识 1、 DateField :可以记录年月日,映射到数据库是 date 类型 2、 DateTimeField :可以记录年月日时分秒,映射到...

Python hashlib常见摘要算法详解

这篇文章主要介绍了Python hashlib常见摘要算法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 Python的hashl...

python 生成器和迭代器的原理解析

一、生成器简介 在python中,生成器是根据某种算法边循环边计算的一种机制。主要就是用于操作大量数据的时候,一般我们会将操作的数据读入内存中处理,可以计算机的内存是比较宝贵的资源,我...