Python + Selenium +Chrome 元素获取时会卡住不动,有经验的同学们帮忙看看

蚊子不吸血 发布于 2018/08/30 18:35
阅读 105
收藏 1

问题描述:
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浏览器,不会有这样的卡顿。

- **代码如下:**

```python
        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() 
```

运行结果如下:

加载中
0
拾光TM
拾光TM
升级一下chrome试试
返回顶部
顶部