在WEB自动化测试过程当中,常常会遇到这样的问题:html
元素定位到了,可是点击无效?有人可能会问了,怎么判断元素定位到了,这个问题很好判断前端
1.给元素加高亮显示python
self.driver.execute_script( "arguments[0].setAttribute('style', arguments[1]);", element, "border: 2px solid red;" #边框border:2px; red红色 )
arguments[0] 这个参数,能够理解为python中的字符串格式化。好比"{}{}".format('aaa','bbbb')jquery
2.执行点击过程不报错。web
不会报一些找不到元素之类的错误。dom
怎么判断元素定位到了,点击没成功(这里说一下,通常是作了点击操做,只是咱们直观去判断没有点击成功)ide
那么,如今来讲一下如何解决这个问题。函数
解决问题:测试
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前端代码会压缩加密。因此上线后咱们看到的是压缩的。