#encoding=utf-8
#WebDriver 获取浏览器及页面基本信息器
from selenium import webdriver
import time
driver=webdriver.Firefox()
firstURL="http://www.sogou.com"
driver.get(firstURL)
#获取浏览器名称
cu_name=driver.name
#获取当前页面的url地址
cu_url=driver.current_url
#获取当前页面标题
cu_title=driver.title
#获取当前页面源代码
cu_html=driver.page_source
#获取当前窗口句柄
cu_handle=driver.current_window_handle
print("浏览器是:{},URL是:{},网页title是:{}".format(cu_name,cu_url,cu_title))
print("网页内容是:\n")
#print(cu_html)
print("当前窗口句柄:{}".format(cu_handle))
time.sleep(2)
driver.quit()
# 设置浏览器大小
driver.set_window_size(800,800)
# 设置浏览器最大化
driver.maximize_window()
from selenium import webdriver
import time
driver = webdriver.Firefox()
driver.implicitly_wait(1)
first_url = "http://www.baidu.com/"
driver.get(first_url)
time.sleep(3)
# 设置浏览器大小
driver.set_window_size(800,800)
# 设置浏览器最大化
time.sleep(3)
driver.maximize_window()
time.sleep(3)
# 访问第二个页面
second_url = 'http://news.baidu.com/'
driver.get(second_url)
time.sleep(3)
# 返回(后退)到百度首页
print("back to %s"%first_url) # back to http://www.baidu.com/
driver.back()
time.sleep(3)
# 前进到新闻页
print("forward to %s"% second_url) # forward to http://news.baidu.com/
time.sleep(3)
driver.forward()
time.sleep(3)
driver.refresh()
time.sleep(3)
driver.quit()
from selenium import webdriver
import time
driver = webdriver.Firefox()
driver.implicitly_wait(1)
url = "http://news.baidu.com/"
try:
driver.get(url)
driver.set_window_size(800, 600)
time.sleep(3)
#将页面的滚动条水平滑动到指定位置
js = 'window.scrollTo(600,0)'
driver.execute_script(js)
time.sleep(3)
# 将页面的滚动条垂直滑动到指定位置
js = 'window.scrollTo(0,800)'
driver.execute_script(js)
time.sleep(3)
# 将页面的滚动条滑动到指定位置
js = 'window.scrollTo(100,100)'
driver.execute_script(js)
time.sleep(3)
# 将页面的滚动条垂直滑动到相对位置
js = 'window.scrollBy(0,300)'
driver.execute_script(js)
time.sleep(3)
except Exception as e:
print("error")
finally:
driver.quit()
click() 单击、clear()清空、send_keys()文本框输入、submit()提交表单,模拟回车
from selenium import webdriver
import time
driver = webdriver.Firefox()
driver.implicitly_wait(1)
url = "https://www.baidu.com"
driver.get(url)
driver.find_element_by_id("kw").clear()
time.sleep(3)
driver.find_element_by_id("kw").send_keys("unittest")
time.sleep(3)
driver.find_element_by_id("su").click()
time.sleep(5)
driver.quit()
ActionChains 类提供的鼠标操作的常用方法:
perform() 执行所有 ActionChains 中存储的行为
context_click() 右击
double_click() 双击
drag_and_drop() 拖动
move_to_element() 鼠标悬停
from selenium import webdriver
# import ActionChains
from selenium.webdriver.common.action_chains import ActionChains
import time
driver = webdriver.Firefox()
# driver.implicitly_wait(1)
first_url = "http://www.baidu.com/"
driver.get(first_url)
# 悬浮 move_to_element()
time.sleep(2)
driver.maximize_window()
time.sleep(2)
element1 = driver.find_element_by_xpath(".//*[@id='u1']/a[8]")
ActionChains(driver).move_to_element(element1).perform()
time.sleep(5)
# 右击 context_click()
ActionChains(driver).context_click(element1).perform()
time.sleep(5)
# 双击 double_click()
ActionChains(driver).double_click(element1).perform()
time.sleep(5)
# 拖动 drag_and_drop()
#定位元素的源位置
element = driver.find_element_by_link_text("新闻")
#定位元素要移动到的目标位置
target = driver.find_element_by_id("kw")
#执行元素的拖放操作
ActionChains(driver).drag_and_drop(element,target).perform()
time.sleep(3)
driver.find_element_by_id("su").click()
driver.quit()
在使用键盘按键方法前需要先导入 keys 类包:
from selenium.webdriver.common.keys import Keys
下面经常使用到的键盘操作:
send_keys(Keys.BACK_SPACE) 删除键(BackSpace)
send_keys(Keys.SPACE) 空格键(Space)
send_keys(Keys.TAB) 制表键(Tab)
send_keys(Keys.ESCAPE) 回退键(Esc)
send_keys(Keys.ENTER) 回车键(Enter)
send_keys(Keys.CONTROL,‘a’) 全选(Ctrl+A)
send_keys(Keys.CONTROL,‘c’) 复制(Ctrl+C)
send_keys(Keys.CONTROL,‘x’) 剪切(Ctrl+X)
send_keys(Keys.CONTROL,‘v’) 粘贴(Ctrl+V)
send_keys(Keys.F1) 键盘 F1
from selenium import webdriver
import time
#引入 Keys 模块
from selenium.webdriver.common.keys import Keys
driver = webdriver.Firefox()
driver.get("http://www.baidu.com")
time.sleep(3)
#输入框输入内容
driver.find_element_by_id("kw").send_keys("seleniumm")
#删除多输入的一个 m
time.sleep(3)
driver.find_element_by_id("kw").send_keys(Keys.BACK_SPACE)
#输入空格键+“教程”
time.sleep(3)
driver.find_element_by_id("kw").send_keys(Keys.SPACE)
time.sleep(3)
driver.find_element_by_id("kw").send_keys("教程")
time.sleep(3)
#ctrl+a 全选输入框内容
driver.find_element_by_id("kw").send_keys(Keys.CONTROL,'a')
time.sleep(3)
#ctrl+x 剪切输入框内容
driver.find_element_by_id("kw").send_keys(Keys.CONTROL,'x')
time.sleep(3)
#ctrl+v 粘贴内容到输入框
driver.find_element_by_id("kw").send_keys(Keys.CONTROL,'v')
time.sleep(3)
#通过回车键盘来代替点击操作
driver.find_element_by_id("su").send_keys(Keys.ENTER)
time.sleep(3)
driver.quit()
#……
send_keys(Keys.F12) #键盘 F12
# 分两步:先定位下拉框,再点击选项,
s = driver.find_element_by_id('nr')
s.find_element_by_xpath("//option[@value='50']").click()
例:
#被测试网页文件select.html的代码:
遍历所有选项的测试用例:
from selenium import webdriver
import time
driver=webdriver.Firefox()
driver.implicitly_wait(30)
driver.maximize_window()
driver.get("file://d://select.html")
#遍历所有选项
select=driver.find_element_by_name("fruit")
all_options=select.find_elements_by_tag_name("option")
for option in all_options:
print("选项文本:{}".format(option.text))
print("选项值:{}".format(option.get_attribute("value")))
option.click()
time.sleep(3)
driver.quit()
扩展:修改html中size=6,重新运行本测试用例
引入Select模块
# 导入 select 模块 Select类
from selenium.webdriver.support.select import Select
通过 select 选项的索引来定位选择对应选项(从 0 开始计数),如选择第三个选项:
#select_by_index(2)
s = driver.find_element_by_id('nr')
Select(s).select_by_index(2)
#select_by_value() #通过 value 值定位
第二个选顷对应的 value 值就是"20":select_by_value(“20”)
Select 模块里面还有一个更加高级的功能,可以直接通过选项的文本内容来定位。
s = driver.find_element_by_id('nr')
Select(s).select_by_visible_text("每页显示50条")
窗口切换,从而操作不同的窗口上的元素。 WebDriver 提供switch_to.window()方法可以切换到任意的窗口。
在 WebDriver 中处理 JavaScript 所生成的 alert、confirm 以及 prompt 是很简单的。具体做法是使用switch_to_alert()方法定位到 alert/confirm/prompt。然后使用 text/accept/dismiss/send_keys 按需进行操做。
text:获取文本值
accept() :点击"确认"
dismiss() :点击"取消"或者叉掉对话框
send_keys() :输入文本值 --仅限于 prompt,在 alert 和 confirm 上没有输入框