selenium基本使用

安装

pip install selenium

使用 (以chrome浏览器为例)

1.导入: from selenium import webdriver

2.创建浏览器驱动对象

方法一: 将下载好的chrome浏览器驱动文件加入到python目录下

browser = webdriver.Chrome() # 默认路径为python环境目录

方法二:指定chrome浏览器驱动文件路径

chromedriver = 'C:\Program Files (x86)\Google\Chrome\Application\chromedriver'
browser = webdriver.Chrome(chromedriver)

3.打开浏览器网页访问url

打开网页:

browser.get('https://www.taobao.com')

关闭网页窗口,并退出浏览器:

driver.close()  # 关闭浏览器窗口
driver.quit()  # 退出浏览器

4.获取元素

a. 获取单个元素:

find_element_by_name()是根据Name值获取

ind_element_by_id()是根据ID获取

find_element_by_xpath()是根据Xpath提取

find_element_by_css_selector('#xxx') # id : #xxx class: .xxx

driver.find_element_by_link_text('账号登录') # 通过链接的文本取元素

其他方法:

from selenium.webdriver.common.by import By

find_element_by_id(id)
就等价于find_element(By.ID, id)

find_element_by_css_selector('#xxx')
等价于find_elements(By.CSS_SELECTOR, '.service-bd li')

b.获取多个元素

find_elements_by_css_selector('#xxx li') # 根据id=xxx来获取下面的所有li的结果

5.前进后退

browser.back()  #后退
time.sleep(1)
browser.forward() #前进

6.切换窗口

driver.execute_script('window.open()')  # 执行js代码, window.open():打开一个空页面

browser.current_window_handl) # 当前窗口
browser.window_handles # 所有窗口列表

browser.switch_to.window(browser.window_handles[1]) #切换到指定窗口

7.模拟登陆CSDN

import time

from selenium import webdriver

driver = webdriver.Chrome()  # chrome驱动文件在默认目录python目录下

driver.get('https://passport.csdn.net/login')

login = driver.find_element_by_link_text('账号登录') # 通过链接的文本取元素
login.click()
time.sleep(1)

username = driver.find_element_by_id('username')
username.send_keys('用户名')  # 输入账号

pwd = driver.find_element_by_id('password')
pwd.send_keys('密码')   # 输入密码

login_btn = driver.find_element_by_css_selector('.btn.btn-primary')
login_btn.click()

8.截图

driver.save_screenshot('csdn.png')

9.获取网页源码

driver.page_source()
# 遇到随滚轮滑动动态加载的页面,需要模拟滚轮滑动到底部后,再获取源码, 滑动速度不能太快,每次滑动一段距离即可.

10.实现拖拽效果

from selenium import webdriver
from selenium.webdriver import ActionChains

driver = webdriver.Chrome()
actions = ActionChains(driver)

driver.get('https://www.runoob.com/try/try.php?filename=jqueryui-api-droppable')

# 切换iframe iframe是一个独立新窗口,需切换
driver.switch_to.frame('iframeResult')

draggable = driver.find_element_by_id('draggable')
droppable = driver.find_element_by_id('droppable')

actions.drag_and_drop(draggable, droppable)
actions.perform()

# time.sleep(3)
# driver.quit()

11.滚动效果

滚动条下拉到底

#方法1
driver.execute_script('window.scrollTo(0, document.body.scrollHeight)') # 0到页面最大高度
#方法2
driver.execute_script("document.documentElement.scrollTop=10000")

12.谷歌无头模式

options = webdriver.ChromeOptions()  # chrome配置选项
options.add_argument('headless')  # 添加无头模式参数

driver = webdriver.Chrome(options=options)

13.执行js语句

driver.execute_script()
方法如果有返回值,有以下几种情况:
  1、如果返回一个页面元素(document element), 这个方法就会返回一个WebElement
  2、如果返回浮点数字,这个方法就返回一个double类型的数字
  3、返回非浮点数字,方法返回Long类型数字
  4、返回boolean类型,方法返回Boolean类型
  5、如果返回一个数组,方法会返回一个List<Object>
  6、其他情况,返回一个字符串
  7、如果没有返回值,此方法就会返回null
  例:
  distance = driver.execute_script('var distance=document.body.scrollHeight;return distance;') # 获取页面高度
  需要返回值时, js代码必须 return 该返回值

14.cookies操作

# 获取所有cookies信息
driver.get_cookies()

# 添加一个cookie信息
driver.add_cookie({'name': 'lisi', 'age': 18}) # 添加的cookie必须是字典形式
# 可以将get_cookies() 获取的 cookies 遍历添加进去

# 删除所有cookies
driver.delete_all_cookies()

 

 

 

 

 

posted @ 2019-07-29 21:58  Deaseyy  阅读(2598)  评论(0编辑  收藏  举报