21、Selenium参数设置


selenium参数的使用

1 元素拖拽

要完成元素的拖拽,首先你需要指定被拖动的元素和拖动目标元素,然后利用 ActionChains 类来实现




	
	
	jQuery UI Draggable - Auto-scroll
	
	
	
	
	


Scroll set to true, default settings

scrollSensitivity set to 100

scrollSpeed set to 100

以下实现元素从 source 拖动到 target 的操作

import os
chrome.get(f'file:///{os.path.abspath("./html/scroll.html")}')

div1 = chrome.find_element_by_id('draggable')
div2 = chrome.find_element_by_id('draggable2')
div3 = chrome.find_element_by_id('draggable3')

from selenium.webdriver import ActionChains
from time import sleep

sleep(2)
action_chains = ActionChains(chrome)
# 将页面上的第一个能被拖拽的元素拖拽到第二个元素位置 
action_chains.drag_and_drop(div1, div2).perform()

# 将页面上的第三个能拖拽的元素,向右下拖动10个像素,共拖动5次
a = action_chains.drag_and_drop_by_offset(div3, 10, 10)
for i in range(5):
    a.perform()
    sleep(2) 

2. 参数的使用

chrome59版本以后可以变成无头的浏览器,加以下参数

options = webdriver.ChromeOptions()
options.add_argument('--headless')
chrome = webdriver.Chrome(chrome_options=options)
chrome.get("http://www.baidu.com")

代理模式

from selenium import webdriver
option = webdriver.ChromeOptions()
option.add_argument("--proxy-server=http://61.138.33.20:808")
chrome = webdriver.Chrome(chrome_options=option)
chrome.get('http://httpbin.org/get')
info = chrome.page_source

print(info)

防检测设置

from selenium.webdriver import Chrome
from selenium.webdriver import ChromeOptions

options = ChromeOptions()
options.add_experimental_option('excludeSwitches', ['enable-automation'])

options.add_experimental_option('useAutomationExtension', False)
chrome = webdriver.Chrome(chrome_options=option)
chrome.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument", {
  "source": """
    Object.defineProperty(navigator, 'webdriver', {
      get: () => false
    })
  """
})

chrome.get('http://httpbin.org/get')
info = chrome.page_source

print(info)

使用 window.navigator.webdriver 检测