selenium的升級與降級

济南小老虎發表於2024-04-09

selenium的升級與降級


背景

selenium3 和 seleium4的版本變化挺大的
清明加班時 同事說可以升級,我直接就用上了最新版本

但是給我的測試demo 發現會報錯
原來 4 比 3 的很多語法都發生了變化. 
可能無法直接使用.

雖然感覺直接升級版本是最好不過的, 因為升級了新版本
可能效能和特性要表現的好一些
但是想為了能夠節約資產投資, 還是減少一些麻煩.

思路

降級 selenium 的版本, 使之能夠相容. 
指令碼為:
/opt/python3/bin/pip3 uninstall urllib3
/opt/python3/bin/pip3 install urllib3==1.26.18
/opt/python3/bin/pip3 uninstall selenium
/opt/python3/bin/pip3 install selenium==3.141.0

說明

selenium3 不能使用 urllib3 較新的版本
會報錯為:

  File "xxx/site-packages/urllib3/util/timeout.py", line 152, in _validate_timeout
    raise ValueError(
ValueError: Timeout value connect was <object object at 0x7f944cb006a0>, 
but it must be an int, float or None.

所以必須也得同時降級.

測試指令碼-selenimum3

cat >/demo.py <<EOF
from selenium import webdriver  
from selenium.webdriver.chrome.options import Options  
import time  

chrome_options = Options()  
chrome_options.add_argument("--headless")  # 在無頭模式下執行  
chrome_options.add_argument("--no-sandbox")  
chrome_options.add_argument("--disable-gpu")  
chrome_options.add_argument("--disable-dev-shm-usage")  
driver = webdriver.Chrome(options=chrome_options, executable_path='/opt/python3/bin/chromedriver')  
driver.get("https://www.baidu.com")  
time.sleep(5.0)  
driver.save_screenshot('/baidu_screenshot.png')  
driver.quit()
EOF

/opt/python3/bin/python3 /demo.py 

測試指令碼-selenium4

cat > /demo.py <<EOF
from selenium import webdriver  
from selenium.webdriver.chrome.options import Options  
from selenium.webdriver.chrome.service import Service  
import time  
  
chrome_options = Options()  
chrome_options.add_argument("--headless")  
chrome_options.add_argument("--no-sandbox")  
chrome_options.add_argument("--disable-gpu")  
chrome_options.add_argument("--disable-dev-shm-usage")   
chrome_options.add_argument("--window-size=1920,1080")
s = Service('/opt/python3/bin/chromedriver')  
driver = webdriver.Chrome(service=s, options=chrome_options)  
driver.get("https://www.baidu.com")    
time.sleep(5)  
driver.save_screenshot('/baidu_screenshot.png')  
driver.quit()
EOF

/opt/python3/bin/python3 /demo.py 

相關文章