本人实习测试工程师,23 年毕业应届生,使用 python + selenium,判断网站元素,输出结果到本地文件,希望能给大家带来一点帮助,代码如下:
from selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWait
from webdriver_helper import * # 这个是一个第三方库,它会自动安装selenium和对应浏览器驱动,很是方便
# 安装的命令是:pip install webdriver- helper==1.*
import csv
import time
with get_webdriver() as dr: # 创建驱动器对象,括号里默认是谷歌,可以输入如“Firefox”等,这个库会自动下载对应的驱动,会自动关闭浏览器
with open('D:/网站.csv','r') as f: # 打开巡检网站的CSV文件,创建对象,“r”是读取模式
list = []
for i in f: # 遍历文件
try:
dr.implicitly_wait(10)
dr.get(i) # 打开文件内的URL
# 显式等待,超过10秒找不到元素报错
WebDriverWait(dr,10).until(lambda dr:dr.find_element(By.XPATH,'你要定位的元素'))
list.append({'URL':i,'Status':'OK'}) # 将Dict类型内容追加到列表List中
except: # 没有找到元素,就会抛出异常,执行下面代码
list.append({'URL':i,'Status':'NO'})
list.pop() # 删除列表最后一个多余元素
header = ['URL','Status'] # 定义写入本地文件的列名
with open('D:/Email.csv','w',newline='') as f: # 打开本地文件,如果没有,则自动创建,否则覆盖,去掉空白,“w”是写入模式
writer = csv.DictWriter(f,fieldnames=header) # 传入列名并创建对象
writer.writeheader() # 将列名写入文件首行标头
writer.writerows(list) # 根据列名写入数据
# 执行完可以去本地路径找到csv文件了