目录
一、先说一个简单的小脚本
# coding = utf-8
from selenium import webdriver
import time
browser = webdriver.Firefox()
time.sleep(3)
browser.get("http://www.baidu.com")
time.sleep(3)
browser.find_element_by_id("kw").send_keys("selenium")
time.sleep(3)
browser.find_element_by_id("su").click()
browser.quit()
1. # coding = utf-8
-
可有可无,用于设置字符的编码方式。
2. from selenium import webdriver
- 导入webdriver包,之后我们就可以使用webdriver的方法了。
3. browser = webdriver.Firefox()
-
设置我们用来进行自动化测试的浏览器,比如Chrome或者
Firefox。
4. browser.find_element_by_id(“kw”).send_keys(“selenium”)
-
一个对象可以拥有很多属性,比如id、name等,通过元素检查我们可以发现
百度输入框的
id
叫做kw,然后我们再通过send_keys()方法设置要输入的内容。
5. browser.find_element_by_id(“su”).click()
- 通过使用检查元素发现搜索按钮的id叫做su,然后我们再使用click()方法进行点击操作。
6. 关闭当前窗口
:
browser.quit()和browser.close()
-
有两种方式可关闭窗口。
browser.quit()用于退出并关闭窗口的每一个相关的驱动程序;另一个是browser.close()用于关闭当前窗口。更推荐使用quit(),因为,quit方法不仅关闭窗口,还会彻底的退出
webdriver
,释放与
driver server
之间的连接。
二、元素定位
对象的定位是自动化测试的核心,要想操作一个对象,首先应该识别这个对象。webdriver
提供了一系列的对象定位方法,常用的有以下几种:id、name、class name、link text、partial link text、tag name、
xpath、
css selector
1. id和name
# coding = utf-8
from selenium import webdriver
import time
driver = webdriver.Firefox()
time.sleep(3)
driver.get("http://www.baidu.com")
time.sleep(3)
driver.find_element_by_id("kw").send_keys("大虞海棠")
time.sleep(3)
driver.find_element_by_id("su").click()
# driver.find_element_by_name("wd").send_keys("大虞海棠")
# time.sleep(3)
# driver.find_element_by_id("su").click()
driver.quit()
2. class name
-
通过
find_element_by_class_name(“s_ipt”)
函数捕获百度输入框
# coding = utf-8
from selenium import webdriver
import time
driver = webdriver.Firefox()
time.sleep(3)
driver.get("http://www.baidu.com")
time.sleep(3)
driver.find_element_by_class_name("s_ipt").send_keys("大虞海棠")
time.sleep(3)
driver.find_elements_by_class_name("bg s_btn").click()
driver.quit()
3. link text
- 通过文字链接的方式进行访问
#coding=utf-8
from selenium import webdriver
driver = webdriver.Chrome()
driver.get("http://www.baidu.com")
driver.find_element_by_link_text("hao123").click()
driver.quit()
三、操作测试对象
# coding = utf-8
from selenium import webdriver
import time
driver = webdriver.Firefox()
driver.get("http://www.baidu.com")
driver.find_element_by_id("kw").send_keys("Ella")
driver.find_element_by_id("su").click()
time.sleep(5)
driver.find_element_by_id("kw").clear()
driver.find_element_by_id("kw").send_keys("Lisa")
driver.find_element_by_id("su").click()
# driver.find_element_by_id("kw").send_keys("Ella")
# driver.find_element_by_id("su").submit()
# time.sleep(5)
# driver.find_element_by_id("kw").clear()
# driver.find_element_by_id("kw").send_keys("Lisa")
# driver.find_element_by_id("su").submit()
# texts = driver.find_element_by_id("s-bottom-layer-right").text
# print(texts)
time.sleep(5)
driver.quit()
1. click( )
-
鼠标点击
-
send_keys(“xx”)
用于在一个输入框里输入具体要输入的
内容
-
clear()
用于清除输入框的内容
2. submit( )
-
提交表单
- submit和click是一样的效果
3. text( )
-
用于获取元素的文本信息
-
使用print()来打印出获得的具体内容
四、添加等待
# coding = utf-8
from selenium import webdriver
import time
driver = webdriver.Firefox()
driver.get("http://www.baidu.com")
driver.find_element_by_id("kw").send_keys("Ella")
driver.find_element_by_id("su").submit()
#time.sleep(10)
#速度太快,页面未加载出来,所以就无法找到
driver.implicitly_wait(10)
driver.find_element_by_partial_link_text("Ella_百度百科").click()
time.sleep(10)
driver.quit()
1. 固定时间等待
- 先引入time包,import time
-
然后使用time.sleep(),在括号中写入需要等待的时间秒数即可
2. 智能等待
-
implicitly_wait()
方法可以方便的实现智能等待
-
在括号中加上具体秒数,可以实现
在一个时间范围内的智能等待
五、打印title和url
# coding = utf-8
from selenium import webdriver
import time
driver = webdriver.Firefox()
driver.get("http://www.baidu.com")
title = driver.title
print(title)
url = driver.current_url
print(url)
time.sleep(10)
driver.quit()
六、浏览器的操作
1. 浏览器最大化(maximize_window())与自定义浏览器宽、高(set_window_size())
# coding = utf-8
from selenium import webdriver
import time
driver = webdriver.Firefox()
driver.get("http://www.baidu.com")
#浏览器最大化
# time.sleep(10)
# driver.maximize_window()
#固定格式
time.sleep(10)
driver.set_window_size(400, 800)
time.sleep(10)
driver.quit()
2. 浏览器前进(forward())与后退(back())
# coding = utf-8
from selenium import webdriver
import time
driver = webdriver.Firefox()
driver.get("http://www.baidu.com")
driver.find_element_by_link_text("新闻").click()
time.sleep(10)
print(driver.title)
# 后退
driver.back()
time.sleep(10)
print(driver.title)
#前进
driver.forward()
print(driver.title)
time.sleep(10)
driver.quit()
3. 给浏览器加上滚动条
# coding = utf-8
from selenium import webdriver
import time
driver = webdriver.Firefox()
driver.get("http://www.baidu.com")
driver.find_element_by_link_text("新闻").click()
time.sleep(10)
driver.set_window_size(400, 800)
time.sleep(10)
#将页面滚动条拖到底部
js = "var q=document.documentElement.scrollTop=10000"
driver.execute_script(js)
time.sleep(10)
#将滚动条移动到页面的顶部
js="var q=document.documentElement.scrollTop=0"
driver.execute_script(js)
time.sleep(10)
driver.quit()
七、键盘事件
1. 要想调用键盘按键操作需要引入
keys
包:
from selenium.webdriver.common.keys import Keys
#通过send_keys()调用按键:
send_keys(Keys.TAB) # TAB
send_keys(Keys.ENTER) # 回车
2. 键盘组合键用法
#coding=utf-8
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time
driver = webdriver.Firefox()
driver.get("http://www.baidu.com")
#输入框输入内容
driver.find_element_by_id("kw").send_keys("selenium")
time.sleep(5)
#ctrl+a 全选输入框内容
driver.find_element_by_id("kw").send_keys(Keys.CONTROL,'a')
time.sleep(5)
#ctrl+x 剪切输入框内容
driver.find_element_by_id("kw").send_keys(Keys.CONTROL,'x')
time.sleep(5)
#输入框重新输入内容,搜索
driver.find_element_by_id("kw").send_keys("webdriver")
driver.find_element_by_id("su").click()
time.sleep(5)
driver.quit()