- 基本使用demo
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.wait import WebDriverWait
browser = webdriver.Chrome()
try:
browser.get('https://www.baidu.com')
input = browser.find_element_by_id('kw')
input.send_keys('风音往事')
input.send_keys(Keys.ENTER)
wait = WebDriverWait(browser, 10)
wait.until(EC.presence_of_element_located((By.ID, 'content_left')))
print(browser.current_url)
print(browser.get_cookies())
print(browser.page_source)
finally:
browser.close()
- 声明浏览器对象
Selenium支持非常多的浏览器,如Chrome、Firefox、Edge等,还有Android、BlackBerry等手机端的浏览器。另外,也支持无界面浏览器PhantomJS。
from selenium import webdriver
browser = webdriver.Chrome()
browser = webdriver.Firefox()
browser = webdriver.Edge()
browser = webdriver.PhantomJS()
browser = webdriver.Safari()
- 访问页面
from selenium import webdriver
browser = webdriver.Chrome()
browser.get('https://www.taobao.com')
print(browser.page_source)
browser.close()
- 查找结点
from selenium import webdriver
browser = webdriver.Chrome()
browser.get('https://www.taobao.com')
input_first = browser.find_element_by_id('q') # 按id查找
input_second = browser.find_element_by_css_selector('#q') # css
input_third = browser.find_element_by_xpath('//*[@id="q"]') #xpath
print(input_first, input_second, input_third)
browser.close()
- pynput拖动
滑动滑块不能利用webdriver,利用pynput这个模块去做拖动操作,这个库是比较底层的,调用win32。之前使用pyautogui发现不行,估计被封装多次,已经被识别出来了
import json
import time
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from pynput.keyboard import Key, Controller as c2
from pynput.mouse import Button, Controller as c1
class vcg_get_cookies():
mouse = c1()
url = 'https://www.vcg.com/login'
options = webdriver.ChromeOptions()
options.add_experimental_option("prefs", {"profile.managed_default_content_settings.images": 2})
options.add_experimental_option('excludeSwitches', ['enable-automation'])
ua = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36'
options.add_argument('user-agent=' + ua)
driver = webdriver.Chrome(executable_path="D:\chromedriver.exe", options=options)
driver.maximize_window()
wait = WebDriverWait(driver, 10)
driver.get(url)
time.sleep(3)
driver.refresh()
while True:
driver.refresh()
time.sleep(3)
mouse.position = (1562, 355)
mouse.press(Button.left)
mouse.move(1890, 358)
mouse.release(Button.left)
time.sleep(3)
WebDriverWait(driver, 5, 0.5).until(EC.presence_of_element_located((By.CLASS_NAME, 'nc-lang-cnt')))
if driver.find_element_by_class_name('nc-lang-cnt').text == '验证通过':
break
time.sleep(2)
driver.find_element_by_name('id').send_keys('用户名')
time.sleep(2)
driver.find_element_by_name('password').send_keys('密码')
driver.find_element_by_class_name('sign-in-form__btn').click()
time.sleep(5)
user_name = wait.until(EC.presence_of_element_located((By.CLASS_NAME, 'userInfo')))
print(user_name)
cookies = driver.get_cookies()
driver.close()
jsonCookies = json.dumps(cookies)
with open('vcgCookies.json', 'w') as f:
f.write(jsonCookies)
print(cookies)