天天看点

记录-selenium简单实现自动点击操作

最近测试规则,网页上每条测试只能手动点测试,想写个脚本实现自动点击,网上收集资料可以用selenium实现,模拟人操作。

import selenium

from selenium import webdriver

from selenium.webdriver.common.by import By

现收集如下材料:

使用selenium模拟打开谷歌浏览器:

1、要下载浏览器版本对应的ChromeDriver驱动包:下载网址

2、打开谷歌浏览器

# 找打刚才安装的chromedriver.exe的位置

browser = webdriver.Chrome(executable_path =r\'D:\chromedriver.exe\')

此时电脑就会新打开谷歌浏览器,并显示受到自动测试软件控制

记录-selenium简单实现自动点击操作

3、打开某个网址:

browser.get(\'https://www.baidu.com/\')

ps:也可以在此浏览器中自行操作打开网址,找到想要操作的页面,此时停留的页面,就是程序里可以操作的页面。

4、元素定位

参考:史上最全!Selenium元素定位的30种方式

5、常用事件

点击:参考Selenium实现点击click()

6、程序延迟执行

import time

time.sleep(360) # 延迟执行360秒

7、动态更改谷歌浏览器默认下载路径

整理的时候找不到是哪个大神写的了,当时用了他的代码下面贴出来:

def set_download_path(driver, path):

"""

禁止下载弹窗,设置下载路径

"""

# path = path.rstrip(os.sep)

driver.command_executor._commands["send_command"] = ("POST", \'/session/$sessionId/chromium/send_command\')

params = {\'cmd\': \'Page.setDownloadBehavior\',

\'params\': {\'behavior\': \'allow\', \'downloadPath\': path}}

driver.execute("send_command", params)

if not os.path.exists(path):

os.makedirs(path)

--------------------------------------------------------分割------------------------------------------------------------------------------------------

记录-selenium简单实现自动点击操作

第一需求是在这样一个页面中,等待上一条测试完成后,自动点击下一条‘开始测试’(测试完成的及进行中的就不会在出现‘开始测试’字样)

初级实现功能代码:

由于短时间没找打怎么监控进度到100%的方法,通过一个简单方法:每条测试大概需要5分钟左右,就设定每隔6分钟点击一次,也基本满足需求。

import selenium

from selenium import webdriver

from selenium.webdriver.common.by import By

import time

# 打开谷歌浏览器,

browser = webdriver.Chrome(executable_path =r\'D:\chromedriver.exe\')

# 手动找到需要操作的页面

for j in range(5): # 需要点击5页

f= browser.find_elements_by_link_text(\'开始测试\') # 找到当前页所有的开始测试元素

for i in range(len(f)): # 循环每隔6分钟点击一个

f[i].click()

time.sleep(360)

browser.find_elements_by_class_name(\'ant-pagination-item-link\')[2].click() # 这一页的开始测试都点完后,点击下一页

time.sleep(4)

改进版,发现有进度的时候会有class:ant-progress-text,text会显示进度百分之多少,测试成功后就会变成其他,所以通过判断当时是否有ant-progress-text来判断当前是否测试完毕,并可以开始下一条测试。

for j in range(5):

f= browser.find_elements_by_link_text(\'开始测试\')

for i in range(len(f)):

f[i].click()

time.sleep(5)

while True:

try:

browser.find_element_by_class_name(\'ant-progress-text\').text # 如果没有ant-progress-text,会报错

time.sleep(30)

except :

break

browser.find_elements_by_class_name(\'ant-pagination-item-link\')[3].click()

time.sleep(4)

第二个需求是对于测试完毕的需要下载测试结果,点击‘下载测试结果’会下载一个csv文件,下面实现自动下载,且每个文件保存在新文件中,文件夹以测试名称命名。

r = browser.find_elements_by_link_text(\'下载测试结果\') # 找下载测试结果

a = browser.find_elements_by_xpath("//tbody//tr") # 找每条测试的名称

for i in range(9):

file_name = a[i].text.split(\' \')[2]

path = r\'C:\Users\99452\Desktop\下载结果\{}\'.format(file_name)

set_download_path(browser,path) # 用到上述第7点更改默认文件夹的函数

time.sleep(10)

r[i].click()

time.sleep(20)

————————————————

版权声明:本文为CSDN博主「胡桃夹子zy」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/hutao_ljj/article/details/112059679

记录-selenium简单实现自动点击操作