在WEB自动化测试过程中,经常会遇到这样的问题:
元素定位到了,但是点击无效?有人可能会问了,怎么判断元素定位到了,这个问题很好判断
1.给元素加高亮显示
self.driver.execute_script( "arguments[0].setAttribute('style', arguments[1]);", element, "border: 2px solid red;" #边框border:2px; red红色 )
arguments[0] 这个参数,可以理解为python中的字符串格式化。比如"{}{}".format('aaa','bbbb')
2.执行点击过程不报错。
不会报一些找不到元素之类的错误。
怎么判断元素定位到了,点击没成功(这里说一下,一般是做了点击操作,只是我们直观去判断没有点击成功)
那么,现在来说一下如何解决这个问题。
解决问题:
1.分析一下,默认selenium的点击操作是点元素0,0点坐标,那么我们可以在元素x,y坐标上加5,让点击操作往里一点。
导入包ActionChains,
from selenium.webdriver.common.action_chains import ActionChains
ele = self.find_element(*loc) ActionChains(driver).move_to_element(ele).move_by_offset(5,5).click().perform()
通过如上代码,先定位元素,然后移动到元素,在元素基础上做偏移x,y 5,5然后点击。
需要注意的是最后的perform()。要加上这个。否则不生效。
2.通过js去点击元素。
可以通过dom去定位,或者jquery定位。然后点击操作。这里不具体说明了。可以找度娘。
3.可以分析代码,如果有直接调用函数的地方,可以通过js直接调用。
要说明的是,这个方法,一般不可行。因为js前端代码会压缩html" target="_blank">加密。所以上线后我们看到的是压缩的。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持小牛知识库。
我正试着点击结账按钮。这就是它的样子: 和超文本标记语言片段: 所有内容都加载到一个iFrame中,所以我也在切换iFrame。 但是按钮有奇怪的html。 代码试用我做了: 我在等待此元素出现时遇到超时异常。 等待位于的元素出现35秒后超时:by。CSS选择器:按钮[数据cid='button.购买按钮']span
我想在selenium中找到我的文本字段,但我不知道如何找到(我第一次使用sellenium)。 我试过: 或者通过xPath和cssSseltor String在dev工具中由chrome生成。 请帮助我,我将感谢解释。 这是html:
本文向大家介绍python+selenium 定位到元素,无法点击的解决方法,包括了python+selenium 定位到元素,无法点击的解决方法的使用技巧和注意事项,需要的朋友参考一下 报错 需要点击的按钮页面显示不了,需要下拉滚动条,能看到按钮了才能点 1、尝试下拉一段滚动条,让按钮能看到 OK,能点到了 2、不是下拉加载的页面,用方法一有点傻,尝试让滚动条定位到指定元素位置 ok,滚动到元素
问题内容: 我正在尝试搜寻房地产网站上的商品。它有一个aspx表单,必须在提交之前填写。 http://www.cbre.us/PropertyListings/Pages/Properties-for- Sale.aspx 我只关心俄勒冈州的多户家庭财产。所以这是我的第一次尝试: 当我运行此脚本时,出现错误“找不到元素“ ForSalePropertyType”。在这里我在做什么错? 问题答案:
问题内容: 这个问题是由于总的中间在试图忠实于什么实际用户一样。所以我在想这种方法: 首先,而不是查找元素,然后单击: 编写单击以下内容的通用函数: 然后,当发生此异常时,请尝试以其他方式单击。 您认为这种方法可行吗? 问题答案: 请仔细阅读此堆栈溢出答案以更好地理解。 更新 我们也可以尝试 也请尝试如下 尝试使用Y坐标单击 尝试使用X坐标单击 希望这对您有帮助
我试图引用并单击网页上的元素。 我们应该能够使用简单的XPath进行引用。例如 然而,这似乎并不奏效。 我使用的chrome扩展表示该元素不存在。 我的代码找不到元素。 下面是我使用Selenium web驱动程序的Java代码。 以下是错误: 太奇怪了!关于为什么我不能引用元素,或者为什么xPath不exist的任何想法。