赞
踩
关于Selenium大家都比较熟悉了,是一个非常不错的自动化工具,用处非常大,好处就不多说了,对于这个不是很熟悉的伙伴们,可以先阅读它的基础用法:
Selenium 自动测试软件的使用(自动化操作)https://blog.csdn.net/weixin_41896770/article/details/115610884 这节主要是一些技巧的介绍,平时也会常用到,比如修改浏览器的用户代理,也就是伪造User-Agent,比如模拟手机访问。还有一些情况,就是不确定的错误,但是不希望程序跳出,而是忽略错误,继续处理,比如网速慢,页面还没有加载完,这个时候获取不到元素等一些未知情况的处理。比如就算sleep停几秒钟,让页面渲染完,可能还存在一些其他元素覆盖住了需要点击的元素!
另外还有一些站点是防止使用Selenium的情况,一般都是查看window.navigator.webdriver,如果是true,就表示使用Selenium在操作了。
- from selenium import webdriver
- from time import sleep
- from selenium.webdriver.common.keys import Keys
- from selenium.webdriver.chrome.options import Options
-
- options = webdriver.ChromeOptions()
- #模拟iPhoneX访问
- #mobile={'deviceName':'iPhone X'}
- #options.add_experimental_option('mobileEmulation', mobile)
- #去掉Chrome正受到自动测试软件的控制
- options.add_experimental_option('excludeSwitches', ['enable-automation'])
- browser=webdriver.Chrome(executable_path='E:\MyChromeDriver\chromedriver.exe', chrome_options=options)
-
- #可以彻底解决webdriver为false
- browser.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument", {"source": "Object.defineProperty(navigator, 'webdriver', {get: () => false})"})
-
- browser.get('https://www.baidu.com')
- i=0
-
- #忽略错误
- # while(True):
- # print('ok'+str(i))
- # i+=1
- # 1/0
- # if i>5:break
- while(True):
- try:
- print('ok'+str(i))
- i+=1
- 1/0
- if i>5:break
- except:
- pass
- if i>5:break
-
-
-
- '''
- window.navigator.webdriver为true就代表是selenium在访问
- 修改为false,就是正常浏览器访问了
- 不过缺点是在加载页面之后修改的值,pass掉
- '''
- #js='Object.defineProperties(navigator,{webdriver: {get: () => false,}});'
- #browser.execute_script(js)
-
-
- #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
-
- #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';
- #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 版本低了,这个时候需要下载新的对应版本
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。