selenium元素单击不稳定解决方法

selenium自动化测试过程中,经常会发现某一元素单击,很不稳定,有时候执行了点击没有反映。

以下总结解决方法:
selenium自带click方法,有的时候不好用,元素定位到了,但是就是点不上。

1. selenium自带的click()方法:

from selenium import  webdriver
el = driver.find_element(By.ID,ID)  # 找到元素
el.click() # 执行点击

缺陷:不稳定

2. 鼠标操作

from selenium import  webdriver
from selenium.webdriver.common.action_chains import ActionChains
el = driver.find_element(By.ID,ID)  # 找到元素
ActionChains(driver).move_to_element(el).click().perform()

鼠标操作的局限于操作依然是模拟页面操作,如果存在元素遮挡无法显示的情况,无法使用

3.找到元素,之后用js注入单击 【常用】

有人可能会问,都找到元素了,直接element.click()不就好了。

这样是可以,但是本文的内容是,有一些不稳定。element.click(),有时定位到元素了,点击没生效。

 element = driver.find_element(*loc)
 driver.execute_script("arguments[0].click();",element)

JS直接运行不会存在遮罩的问题,健壮性是最好的。
补充:JS也有一个问题,使用JS点击,由于没有在页面真正的进行点击操作,触发不了按钮对应的JS脚本,可能导致系统无法按照预期效果运行。这种特殊情况下可使用其他点击操作代替

最大的问题是不会报错,有的时候Xpath写错了,使用JS运行点击不会报错,就是没有效果。

4.F12查一看,要点击的按钮,或连接,有没有οnclick=func();这样调用方法

如果有的话,可以直接用js调用方法名


driver.execute_script("func();)
  • 9
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在使用Selenium进行点击操作时,有几种方法可以实现。一种是使用Selenium自带的click()方法,你可以通过找到元素并调用click()方法来执行点击操作。例如,你可以使用以下代码来点击一个元素: ```python from selenium import webdriver el = driver.find_element(By.ID, ID) # 找到元素 el.click() # 执行点击 ``` 这种方法适用于简单的点击操作。\[1\] 另一种方法是使用鼠标操作来模拟点击。你可以使用Selenium的ActionChains类来实现鼠标操作。例如,你可以使用以下代码来模拟鼠标点击一个元素: ```python from selenium import webdriver from selenium.webdriver.common.action_chains import ActionChains el = driver.find_element(By.ID, ID) # 找到元素 ActionChains(driver).move_to_element(el).click().perform() ``` 这种方法可以模拟更复杂的鼠标操作,比如鼠标移动到元素上再点击。\[3\] 在循环中使用Selenium的click()方法可能会导致点击同一个元素多次的问题。如果你想按照你的想法,一个问题一个问题地执行点击操作,可以将点击操作放在循环体外,使用多行click()来实现。这样可以确保每次循环只点击一个按钮。\[2\] #### 引用[.reference_title] - *1* *3* [python--selenium元素点击不到,你需要的点击方法都在这](https://blog.csdn.net/Bierante/article/details/125908096)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [Selenium页面点击玄学](https://blog.csdn.net/m0_72760466/article/details/128713390)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值