在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前端代碼會壓縮加密。因此上線後咱們看到的是壓縮的。