Selenium的一些技巧与错误处理

2022年01月15日 阅读数:4
这篇文章主要向大家介绍Selenium的一些技巧与错误处理,主要内容包括基础应用、实用技巧、原理机制等方面,希望对大家有所帮助。

        关于Selenium你们都比较熟悉了,是一个很是不错的自动化工具,用处很是大,好处就很少说了,对于这个不是很熟悉的伙伴们,能够先阅读它的基础用法:html

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

另外还有一些站点是防止使用Selenium的状况,通常都是查看window.navigator.webdriver,若是是true,就表示使用Selenium在操做了。web

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});

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

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.exeapi

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