python之selenium

2021/7/26 22:08:04

本文主要是介绍python之selenium,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

一、Selenium基础

1.Selenium简介

Selenium是一个用于测试网站的自动化测试工具,支持各种浏览器包括Chrome、Firefox、Safari等主流界面浏览器,同时也支持phantomJS无界面浏览器。

2、安装selenium

pip install selenium

3、安装浏览器驱动

Selenium3.x调用浏览器必须有一个webdriver驱动文件

Chrome

淘宝镜像: https://npm.taobao.org/mirrors/chromedriver

不同的Chrome的版本对应的chromedriver.exe 版本也不一样,下载时不要搞错了。如果是最新的Chrome, 下载最新的chromedriver.exe 就可以了。

把chromedriver的路径也加到环境变量里。

Firefox

Firefox驱动下载地址为: https://github.com/mozilla/geckodriver/releases

根据自己的操作系统下载对应的驱动即可,使用的话,需要把驱动的路径和火狐浏览器的路径加入到环境变量里面才可以

IE

IE浏览器驱动下载地址为: http://selenium-release.storage.googleapis.com/index.html

二、Selenium入门–基本使用

1.导入相关模块

from selenium import webdriver

2.获取浏览器对象

driver=webdriver.Firefox() #该行代码将会打开火狐浏览器

3.打开指定网址的网页

driver.get(url="http://www.baidu.com") #该行代码将会自动打开百度首页

4、获取浏览器对象

driver=webdriver.Chrome() driver.maximize_window() #设置浏览器大小 最大化

三、元素定位的八种方式

定位元素在爬虫领域十分常用并重要,因此掌握基本的定位知识会帮你大大降低学习爬虫的难度,selenium在定位元素方面提供了八种定位方式:

  1. id
  2. name
  3. class name
  4. tag name
  5. link text
  6. partial link text
  7. xpath
  8. css selector

定位单个元素

定位多个元素(以列表形式返回)

含义

find_element_by_id

find_elements_by_id

通过元素id定位

find_element_by_name

find_elements_by_name

通过元素name定位

find_element_by_xpath

find_elements_by_xpath

通过xpath表达式定位

find_element_by_link_text

find_elements_by_link_text

通过完整文本值定位

find_element_by_partial_link_text

find_elements_by_partial_link_text

通过部分文本值定位

find_element_by_tag_name

find_elements_by_tag_name

通过标签定位

find_element_by_class_name

find_elements_by_class_name

通过类名进行定位

find_elements_by_css_selector

find_elements_by_css_selector

通过css选择器进行定位

注:F12大法好!!!!!

四、控制浏览器

方法

说明

set_window_size()

设置浏览器的大小

back()

控制浏览器后退

forward()

控制浏览器前进

refresh()

刷新当前页面

clear()

清除文本

send_keys (value)

模拟按键输入

click()

单击元素

submit()

用于提交表单

get_attribute(name)

获取元素属性值

is_displayed()

设置该元素是否用户可见

size

返回元素的尺寸

text

获取元素的文本

from selenium import webdriver driver=webdriver.Chrome()# 获取Chrome浏览器对象 #driver=webdriver.Firefox() 获取火狐浏览器对象 driver.set_window_size(300,300) #设置窗口大小为300px*300px time.sleep(2) #睡2秒,防止加载速度跟不上代码执行速度而报错 user=driver.find_element_by_xpath('//*[@id="TANGRAM__PSP_11__userName"]') user.send_keys("想要输入的内容") denglu=driver.find_element_by_xpath('//*[@id="s-top-loginbtn"]') #通过xpath定位到登录按钮,用denglu接收元素对象 denglu.click() #进行对登录按钮的点击

五、窗口与irame切换

方法

说明

current_window_handle

获得当前窗口句柄

window_handles

返回所有窗口的句柄到当前会话

switch_to.window()

用于切换到相应的窗口,与上一节的switch_to.frame()类似,前者用于不同窗口的切换,后者用于不同表单之间的切换。

1.获取当前窗口句柄使用属性:current_window_handle

2.返回所有窗口的句柄使用属性:window_handles

3.切换窗口使用属性:switch_to.window()

from selenium import webdriver from selenium.webdriver.common.keys import Keys import time driver=webdriver.Chrome() #获取浏览器对象 driver.get("http://www.baidu.com") #加载百度首页 time.sleep(2) #睡眠两秒 print(driver.current_window_handle) #打印当前窗口句柄 input=driver.find_element_by_xpath('//*[@id="kw"]')#定位百度搜索框 time.sleep(1) input.send_keys("python爬虫") #搜索框输入内容 time.sleep(1) driver.find_element_by_xpath('//*[@id="su"]').click()#定位百度一下按钮进行点击搜索 time.sleep(1) driver.find_element_by_xpath('//*[@id="2"]/h3/a').click()#定位并点击链接 print(driver.current_window_handle)#打印当前窗口句柄比对上一次 print(driver.window_handles) #打印当前全部窗口句柄,两个 driver.switch_to.window(driver.window_handles[-1])#切换到最后一个窗口,因为就两个窗口 print(driver.current_window_handle)#打印切换后的当前窗口句柄

六、番外篇之截图

网页截图(或指定元素截图)

方法

说明

get_screenshot_as_file(self, filename)

用于截取当前窗口,并把图片保存到本地

screenshot(self,filename)

用于指定元素截图,并保存到本地

关闭网页(单个和多个)

方法

说明

close()

关闭单个窗口

quit()

关闭所有窗口

from selenium import webdriver import time driver=webdriver.Chrome() driver.get("http://baidu.com") time.sleep(1) driver.get_screenshot_as_file("bd.png")#截取当前窗口 time.sleep(1) bd=driver.find_element_by_xpath('//*[@id="lg"]/map/area')#定位元素 time.sleep(1) bd.screenshot("bd1.png") #截取bd元素图像png格式



这篇关于python之selenium的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程