学习笔记:基于selenium+python实现某个网站数据的批处理审核

这篇博客分享了在大规模数据审核项目中遇到的问题及解决方案。包括无头模式定位问题、网址变化时的窗口切换、元素不可操作的处理、元素定位的技巧、等待策略的运用,以及编写脚本时的注意事项。作者强调了自动化工具在提高效率的同时,也需要灵活应对各种技术难题。
摘要由CSDN通过智能技术生成

项目概况:需要逐条审核7万+的数据,非常的机械性,但是平台不提供批处理功能,只能人工一个个去点。符合平台内置条件的就提示通过,不符合的你点通过就会弹出不通过的原因,这时候就需要退回,并且必须要附上退回的理由。
在这个项目过程中碰到的问题:
1、无头模式(headless)无法定位,在有头模式(有界面)下是可以正常定位的,后来找了半天的,原因,用最大化窗口也搞不定,最后是最大化并且把窗口大小设置成电脑分辨率大小才搞定。

# 最大化窗口
driver.maximize_window()
# 设置为本台电脑最大的分辨率,不然有头模式能运行,无头模式将无法运行。
driver.set_window_rect(x=0, y=0, width=1920, height=1080)

2、碰到网页网址变化的情况,无法定位,这个时候需要切换窗口即可

# 切换窗口函数
def switch(driver):
    # 获得打开的第一个窗口句柄
    window_1 = driver.current_window_handle
    # 获得打开的所有的窗口句柄
    windows = driver.window_handles
    # 切换到最新的窗口
    for current_window in windows:
        if current_window != window_1:
            driver.switch_to.window(current_window)

3、出现元素不可操作的情况,此时使用try/except让脚本跳过这个页面即可,不然会卡死报错。
4、当在无头模式下出现无法定位,有界面又可以定位的情况,因为无法知道无头模式下页面的样子,这是就可以用界面功能把当时的页面保存下来看,方便对照检查。

#运行过程中进行截图,支持无界面模式,文件自动保存在工程目录下
driver.save_screenshot('screenshot.png')

5、浏览器自带的右键可以复制Xpath相对路径和绝对路径,真的很好用,直接复制粘贴就能用。当然,要素出现要素在框架frame内就需要先切入。但是也带来一个很大的烦恼,就是绝对路径很长,相对路径也不短,导致脚本很夸张,可读性降低。其实用Xpath里的ID,name之类的属性值,或者contains(包含)等有是很简便的定位方法。

driver.find_element(By.XPATH, '//*[@placeholder="请输入手机号"]').send_keys('123456789')
driver.find_element(By.XPATH, './/span[contains(text(),"待本级审核")]').click()
driver.find_element(By.XPATH,'//span[text()="下一个"]').click()

6、等待的利用,有时候显式等待好用,有时候强制等待好用,隐形等待是全局的不好控制。

#显式等待
WebDriverWait(driver, 10,0.2).until(EC.visibility_of_element_located((By.XPATH, '//span[contains(.,"审核通过")]')))

7、写好的定位现在控制台测试能定位到唯一的元素后再拿到脚本中去运行,能节省时间。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值