问题描述:
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()
运行结果如下: