问题描述:
Python + Selenium +Chrome 实现设备在网页上升级功能,页面上将升级的文件加载,然后点击升级。在升级的过程中,抓取 class name 为 “reboot_warn” 的 text 内容。页面上升级滚动条动的过程中,通过打印信息发现 result = driver.find_element_by_class_name("reboot_warn").text 这个地方一直会卡住不动,代码卡在这个地方不往下走。 直到页面上滚动条停止后,result = driver.find_element_by_class_name("reboot_warn").text 才会获取到值,代码才会继续往下走。 使用 Firefox 浏览器,不会有这样的卡顿。

option = webdriver.ChromeOptions()
driver = webdriver.Chrome()
###登录到web界面
driver.get("http://admin:admin@"+dst_ip)

#点击system
driver.find_element_by_xpath("//li[6]/a").click()

#点击Files
driver.find_element_by_xpath("//li[6]/div/ul/li[6]/a").click()

#上传文件
ver_flag = 0
if current_ver in target_file:
    driver.find_element_by_name("system_update").send_keys(tmp_path)
    ver_flag = 2
elif current_ver in tmp_file:
    driver.find_element_by_name("system_update").send_keys(target_path)
    ver_flag = 1
else:
    info = "设备查询出来的版本同目标版本和临时版本都不一致"        
    objScriptLog.saveLog(info)
    driver.find_element_by_name("system_update").send_keys(target_path)
    ver_flag = 1

#点击开始升级
driver.find_element_by_name("save_button").click()

#等待升级完成
upgrade_flag = 0
for i in range(1,61):
    print "***********************当前循环:",i
    result = driver.find_element_by_class_name("reboot_warn").text
    print "*********result:",result                            
    objScriptLog.saveLog(result)            

    if "Upgrade is ok" in result:                
        info = "软件升级成功,正在重启设备"        
        objScriptLog.saveLog(info)
        upgrade_flag = 1
        break
    elif "upgrade failed" in result: 
        info = "设备升级失败,请检查"        
        objScriptLog.saveLog(info)
        break
    else:
        time.sleep(5)               
        info = "设备还在升级,等待5秒后再次查询升级状态..."        
        objScriptLog.saveLog(info)

if upgrade_flag == 0:            
    info = "5分钟设备还没有完成升级,请检查升级过程是否出现异常"        
    objScriptLog.saveLog(info)
    logging.error("5分钟设备还没有完成升级,请检查升级过程是否出现异常")
    reflag = 0
#页面升级结束,退出浏览器    
driver.quit() 

运行结果如下:


↙↙↙阅读原文可查看相关链接,并与作者交流