selenium的常用方法-实战讲解

  1. 基本使用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)  # 等待浏览器渲染-10s
    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()  # 关闭浏览器
  1. 声明浏览器对象
    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()
  1. 访问页面
from selenium import webdriver
 
browser = webdriver.Chrome()
browser.get('https://www.taobao.com')
print(browser.page_source)
browser.close()
  1. 查找结点
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()
  1. 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})
    # 此步骤很重要,设置为开发者模式,防止被各大网站识别出来使用了Selenium
    options.add_experimental_option('excludeSwitches', ['enable-automation'])
    # 添加本地代理
    # options.add_argument("--proxy--server=127.0.0.1:8080")
    # 添加UA
    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:
        # pyautogui.press('f5')
        # keyboard.press(Key.f5)
        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()  # Selenium为我们提供了get_cookies来获取登录cookies
    driver.close()  # 获取cookies便可以关闭浏览器
    # 然后的关键就是保存cookies,之后请求从文件中读取cookies就可以省去每次都要登录一次的
    # 当然可以把cookies返回回去,但是之后的每次请求都要先执行一次login没有发挥cookies的作用
    jsonCookies = json.dumps(cookies)  # 通过json将cookies写入文件
    with open('vcgCookies.json', 'w') as f:
        f.write(jsonCookies)
    print(cookies)
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值