seleniumWebdriver
安装Selenium库
pip install selenium测试,新建一个 .py文件输入如下内容
from selenium import webdriver
driver = webdriver.Chrome()
driver.get("https://www.baidu.com")
print(driver.title)
driver.quit()执行完之后,会打印出 “百度一下,你就知道”
下载浏览器驱动
chrome https://sites.google.com/a/chromium.org/chromedriver/home
firefox https://github.com/mozilla/geckodriver/releases
其它的自行搜索
设置浏览器驱动
frome selenium import webdriver
driver = webdriver.Firefox() # Firefox浏览器
driver = webdriver.Chrome() # Chrome浏览器
driver = webdriver.Ie() # Internet Explorer浏览器
driver = webdriver.Edge() # Edge浏览器
driver = webdriver.Opera() # Opera浏览器
driver = webdriver.PhantomJS() # PhantomJS元素定位
selenium提供了8种定位方式
id
name
class name
tag name
link text
partial link text
xpath
css selector这8种定位方式对应的方法为:
find_element_by_id()
find_element_by_name()
find_element_by_class_name()
find_element_by_tag_name()
find_element_by_link_text()
find_element_by_partial_link_text()
find_element_by_xpath()
find_element_by_css_selector()定位方法的用法
假如有一个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">目标:定位input标签的输入框
通过id定位:
driver.find_element_by_id("kw")通过name定位:
driver.find_element_by_name("wd")通过class name定位:
driver.find_element_by_class_name("s_ipt")通过tag定位:
driver.find_element_by_tag_name("input")通过xpath定位,xpath定位写法很多,这里列出几种常用的做参考:
driver.find_element_by_xpath("//*[@id='kw']")
driver.find_element_by_xpath("//*[@name='wd']")
driver.find_element_by_xpath("//input[@class='s_ipt']")
driver.find_element_by_xpath("/html/body/form/span/input")
driver.find_element_by_xpath("//span[@class='soutu-btn']/input")
driver.find_element_by_xpath("//form[@id='form']/span/input")
driver.find_element_by_xpath("//input[@id='kw' and @name='wd']")通过css定位,css定位写法同样有很多, 也列出几种做参考:
driver.find_element_by_css_selector("#kw")
driver.find_element_by_css_selector("[name=wd]")
driver.find_element_by_css_selector(".s_ipt")
driver.find_element_by_css_selector("html > body > form > span > input")
driver.find_element_by_css_selector("span.soutu-btn> input#kw")
driver.find_element_by_css_selector("form#form > span > input")接下来,我们的页面上有一组文本链接。
<a class="mnav" href="http://news.baidu.com" name="tj_trnews">新闻</a>
<a class="mnav" href="http://www.hao123.com" name="tj_trhao123">hao123</a>通过link text完整内容定位:
driver.find_element_by_link_text("新闻")
driver.find_element_by_link_text("hao123")通过link text部分内容定位:
driver.find_element_by_partial_link_text("新")
driver.find_element_by_partial_link_text("hao")
driver.find_element_by_partial_link_text("123")控制浏览器操作
控制浏览器窗口大小
有时候我们希望能以某种浏览器尺寸打开,让访问的页面在这种尺寸下运行。例如可以将浏览器设置成移动端大小(480* 800),然后访问移动站点,对其样式进行评估;WebDriver提供了set_window_size()方法来设置浏览器的大小。
from selenium import webdriver
driver = webdriver.Chrome()
drvier.get("https://m.baidu.com")
# 参数数字单位为像素
print("设置浏览器宽400,高800显示")
driver.set_window_size(400, 800)
driver.maximize_window() # 浏览器全屏显示
driver.quit()控制浏览器后退、前进
在使用浏览器浏览网页时,浏览器提供了后退和前进按钮,可以方便地在浏览过的网页之间切换,WebDriver也提供了对应的back()和forward()方法来模拟后退和前进按钮。下面通过例子来演示这两个方法的使用。
from selenium import webdriver
driver = webdriver.Chrome()
first_url = 'https://www.baidu.com'
driver.get(first_url)
second_url = 'https://www.sina.com.cn'
driver.get(second_url)
# 后退到first_url
driver.back()
# 前进到second_url
driver.forward()刷新页面
有时需要手动刷新页面
driver.refresh()点击和输入
前面我们已经学习了定位元素, 定位只是第一步, 定位之后需要对这个元素进行操作, 或单击(按钮) 或输入(输入框) , 下面就来认识 WebDriver 中最常用的几个方法:
clear(): 清除文本。 send_keys (value): 模拟按键输入。 click(): 单击元素。
from selenium import webdriver
driver = webdriver.Chrome()
driver.get('https://www.baidu.com')
driver.find_element_by_id("kw").clear()
driver.find_element_by_id("kw").send_keys("selenium")
dirver.find_element_by_id("su").click()提交
submit() 该方法用于提交表单,例如在搜索框输入关键字后回车的操作就可以使用该方法模拟
from selenium import webdriver
driver = webdriver.Chrome()
driver.get("https://www.baidu.com")
search_text = driver.find_element_by_id('kw')
search_text.send_keys("selenium")
search_text.submit()其它常用方法
size: 返回元素的尺寸。 text: 获取元素的文本。 get_attribute(name): 获得属性值。 is_displayed(): 设置该元素是否用户可见。
最后更新于