当前位置:   article > 正文

Selenium的一些技巧与错误处理_selenium 错误继续执行

selenium 错误继续执行

        关于Selenium大家都比较熟悉了,是一个非常不错的自动化工具,用处非常大,好处就不多说了,对于这个不是很熟悉的伙伴们,可以先阅读它的基础用法:

Selenium 自动测试软件的使用(自动化操作)https://blog.csdn.net/weixin_41896770/article/details/115610884        这节主要是一些技巧的介绍,平时也会常用到,比如修改浏览器的用户代理,也就是伪造User-Agent,比如模拟手机访问。还有一些情况,就是不确定的错误,但是不希望程序跳出,而是忽略错误,继续处理,比如网速慢,页面还没有加载完,这个时候获取不到元素等一些未知情况的处理。比如就算sleep停几秒钟,让页面渲染完,可能还存在一些其他元素覆盖住了需要点击的元素!

另外还有一些站点是防止使用Selenium的情况,一般都是查看window.navigator.webdriver,如果是true,就表示使用Selenium在操作了。

  1. from selenium import webdriver
  2. from time import sleep
  3. from selenium.webdriver.common.keys import Keys
  4. from selenium.webdriver.chrome.options import Options
  5. options = webdriver.ChromeOptions()
  6. #模拟iPhoneX访问
  7. #mobile={'deviceName':'iPhone X'}
  8. #options.add_experimental_option('mobileEmulation', mobile)
  9. #去掉Chrome正受到自动测试软件的控制
  10. options.add_experimental_option('excludeSwitches', ['enable-automation'])
  11. browser=webdriver.Chrome(executable_path='E:\MyChromeDriver\chromedriver.exe', chrome_options=options)
  12. #可以彻底解决webdriver为false
  13. browser.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument", {"source": "Object.defineProperty(navigator, 'webdriver', {get: () => false})"})
  14. browser.get('https://www.baidu.com')
  15. i=0
  16. #忽略错误
  17. # while(True):
  18. # print('ok'+str(i))
  19. # i+=1
  20. # 1/0
  21. # if i>5:break
  22. while(True):
  23. try:
  24. print('ok'+str(i))
  25. i+=1
  26. 1/0
  27. if i>5:break
  28. except:
  29. pass
  30. if i>5:break
  31. '''
  32. window.navigator.webdriver为true就代表是selenium在访问
  33. 修改为false,就是正常浏览器访问了
  34. 不过缺点是在加载页面之后修改的值,pass掉
  35. '''
  36. #js='Object.defineProperties(navigator,{webdriver: {get: () => false,}});'
  37. #browser.execute_script(js)
  38. #Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1
  39. #var customUserAgent='Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36';
  40. #Object.defineProperty(navigator, 'userAgent', {value: customUserAgent,writable: false});

由于本人浏览器更新了,这个时候会出现下面的错误:

selenium.common.exceptions.SessionNotCreatedException: Message: session not created: This version of ChromeDriver only supports Chrome version 93
Current browser version is 97.0.4692.71 with binary path C:\Program Files (x86)\Google\Chrome\Application\chrome.exe

也就是ChromeDriver 版本低了,这个时候需要下载新的对应版本

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小舞很执着/article/detail/1001015
推荐阅读
相关标签
  

闽ICP备14008679号