Python3中selenium的应用
安装selenium库
selenium是python中的一个第三方库
pip install selenium
下载浏览器驱动
各浏览器下载地址:
Firefox浏览器驱动:geckodriver
Chrome浏览器驱动:chromedriver
Edge浏览器驱动:MicrosoftWebDriver
Opera浏览器驱动:operadriver
设置浏览器驱动
我们可以手动创建一个存放浏览器驱动的目录,如:E:\driver , 将下载的浏览器驱动文件(例如:chromedriver、geckodriver)丢到该目录下。
将“E:\driver”目录添加到Path的值中。
from selenium import webdriver #导入驱动模块
driver = webdriver.Firefox() # Firefox浏览器
driver = webdriver.Chrome() # Chrome浏览器
driver = webdriver.Edge() # Edge浏览器
driver = webdriver.Opera() # Opera浏览器
selenium常用方法
text :获取文本内容
click():点击操作
submit:提交 操作可以和click交替着使用
send_keys:使用内容的
maximize_window():最大化浏览器
minimize_window():最小化浏览器
get : 打开一个网址
driver.quit():关闭浏览器
is_displayed:判断元素是否可见
quit()退出浏览器,会关闭掉所有的标签页面
close()只能关闭初始一个标签页
selenium元素定位方法
Selenium提供了8种定位方式
id
name
class name
tag name
link text
partial link text
xpath
css selector
selenium选择元素的方法
·find_element_by_css_selector:通过元素的class选择
如:<div class='bdy-inner'>test</div>
可以使用:find_element_by_css_selector('div.bdy-inner')。
·find_element_by_xpath:通过xpath选择
如:<form id="loginForm">
可以使用driver.find_element_by_xpath("//form[@id='loginForm']")。
·find_element_by_id:通过元素的id选择
如:<div id='bdy-inner'>test</div>
可以使用:driver.find_element_by_id('bdy-inner')。
·find_element_by_name:通过元素的name选择
如<input name="username"type="text"/>
可以使用:driver.find_element_by_name('password')。
·find_element_by_link_text:通过链接地址选择
如<a href="continue.html">Continue</a>
可以使用:driver.find_element_by_link_text('Continue')。
·find_element_by_partial_link_text:通过链接的部分地址选择
如<a href="continue.html">Continue</a>
可以使用:driver.find_element_by_partial_link_text('Conti')。
·find_element_by_tag_name:通过元素的名称选择
如<h1>Welcome</h1>
可以使用:driver.find_element_by_tag_name('h1')。
·find_element_by_class_name:通过元素的class选择
如<p class="content">Site content goes here.</p>
可以使用:driver.find_element_by_class_name('content')。
web网页元素查看
<html>
<head>
<body link="#0000cc">
<a id="result_logo" href="/" onmousedown="return c({'fm':'tab','tab':'logo'})">
<form id="form" class="fm" name="f" action="/s">
<span class="soutu-btn"></span>
<input id="kw" class="s_ipt" name="wd" value="" maxlength="255" autocomplete="off">
id定位:
dr.find_element_by_id("kw")
name定位:
dr.find_element_by_name("wd")
class name定位:
dr.find_element_by_class_name("s_ipt")
tag name定位:
dr.find_element_by_tag_name("input")
link text定位:
dr.find_element_by_link_text("新闻")
dr.find_element_by_link_text("hao123")
partial_link_text定位:
dr.find_element_by_partial_link_text("新")
dr.find_element_by_partial_link_text("hao")
dr.find_element_by_partial_link_text("123")
xpath定位,常用写法:
dr.find_element_by_xpath("//*[@id='kw']")
dr.find_element_by_xpath("//*[@name='wd']")
dr.find_element_by_xpath("//input[@class='s_ipt']")
dr.find_element_by_xpath("/html/body/form/span/input")
dr.find_element_by_xpath("//span[@class='soutu-btn']/input")
dr.find_element_by_xpath("//form[@id='form']/span/input")
dr.find_element_by_xpath("//input[@id='kw' and @name='wd']")
css定位,常用写法:
dr.find_element_by_css_selector("#kw")
dr.find_element_by_css_selector("[name=wd]")
dr.find_element_by_css_selector(".s_ipt")
dr.find_element_by_css_selector("html > body > form > span > input")
dr.find_element_by_css_selector("span.soutu-btn> input#kw")
dr.find_element_by_css_selector("form#form > span > input")
selenium元素选取实例
#元素定位,导入浏览器驱动模块
from selenium import webdriver
import time
#创建一个Chrome浏览器
driver = webdriver.Chrome()
#隐式等待
driver.implicitly_wait(10)
#浏览器最大化
driver.maximize_window()
# 参数数字为像素点
driver.set_window_size(480, 800)
# 打开指定的网页(URL就是指网址)
driver.get("http://www.baidu.com")
#定位输入框 输入内容
#方法一:id
driver.find_element_by_id('kw').send_keys("天气预报")
#方法二:name
driver.find_element_by_name('wd').send_keys("今日头条")
#方法三:class
driver.find_element_by_class_name('s_ipt').send_keys("新闻")
#方法四:css
driver.find_element_by_css_selector('.s_ipt').send_keys("阅兵") #class:.s_ipt
driver.find_element_by_css_selector('#kw').send_keys("明星") #id:kw
#方法五:xpath
driver.find_element_by_xpath("//input[@id='kw']").send_keys("女神")
# <input type="text" class="s_ipt" name="wd" id="kw" maxlength="100"autocomplete="off">
# //input[@id='kw']
#点击 百度一下
driver.find_element_by_id('su').click()
# <input type="submit" value="百度一下" id="su" class="btn self-btn bg s_btn">
选取元素的优先级:id name class tag_name link_text css xpath