Selenium页面点击玄学

前言

在实现自动点击按钮时,遇到了很诡异的事情。当我在循环里使用selenium自带的click()时,selenium会一直点击第一个问题的第一个按钮。当我在循环体外CV 多行click()时,selenium神奇地按照我的想法,一个问题一个问题地执行。

现在,我把点击的方法做一个汇总。

Selenium页面点击玄学_第1张图片
Selenium页面点击玄学_第2张图片

Selenium自带的click()

缺点:玄

from selenium.webdriver import Edge
web = Edge()
url = "xxxx"
web.find_element(by=, value=).click

ActionChains

缺点:不可以点击被覆盖的元素

from selenium.webdriver import Edge, ActionChains#导入
web = Edge()
url = "xxxx"
ele = web.find_element(by=, value=)
#链式写法
ActionChains(web).move_to_element(ele).click().perform()#执行
#翻译翻译就是,在web里,把鼠标移动到ele这个元素上面,然后click()点击
#这里的click()相当于预备,perform()才是正式执行
'''
#分布式写法
ele = ActionChains(web).move_to_element(ele)
ele.click()
ele.perform()
'''

Js大法

from selenium import webdriver
web = Edge()
url = "xxxx"
web.get(url)
ele = web.find_element(by=By.XPATH, value="xxx")

web.execute_script("arguement[0].click();",ele)#执行脚本
'''
arguement[0]表示第零个参数,与ele对应
'''

总结

无论是那种方法,都有优缺点,遇到问题了,多试试,总有可以跑起来的。

你可能感兴趣的:(Selenium,selenium,edge,python,测试工具)