1. 浏览器操作
1、控制浏览器窗口大小
driver.set_window_size(800,800) # 设置浏览器窗口大小
driver.maximize_window() # 设置浏览器最大化
2、控制浏览器后退、前进、刷新
second_url = 'http://news.baidu.com/'
driver.get(second_url) # 访问第二个页面
driver.back() # 浏览器 返回(后退)
driver.forward() #浏览器前进
driver.refresh() #浏览器刷新
driver.quit() #浏览器退出
3. 操作暂停
import time
time.sleep(5) # 显示等待5s
4. 浏览器滚动
js = "var q=document.documentElement.scrollTop=10000"
driver.execute_script(js)
time.sleep(5) # 鼠标滚动到底部
js = "var q=document.documentElement.scrollTop=0"
driver.execute_script(js) # 然后滚动到上面
2. 元素操作
1. 文本框简单操作
click() 单击、clear()清空、send_keys()文本框输入、submit()提交表单,模拟回车操作
driver.find_element_by_id("xxx").clear()
driver.find_element_by_id("xxx").send_keys("username")
driver.find_element_by_id("xxx").click()
2. 鼠标事件
ActionChains 类提供的鼠标操作的常用方法: perform() 执行所有 ActionChains 中存储的行为
context_click() 右击 double_click() 双击
move_to_element() 鼠标悬停 drag_and_drop() 拖动
ActionChains(driver).context_click(element1).perform()
ActionChains(driver).double_click(element1).perform()
ActionChains(driver).move_to_element(element1).perform()
element = driver.find_element_by_name("xxx")#定位元素的源位置
target = driver.find_element_by_name("xxx")#定位元素要移动到的目标位置
ActionChains(driver).drag_and_drop(element,target).perform()#执行元素的拖放操作
3. 键盘事件
在使用键盘按键方法前需要先导入 keys 类包。
from selenium.webdriver.common.keys import Keys #引入 Keys 模块
driver = webdriver.Firefox()
driver.get("http://www.baidu.com")
driver.find_element_by_id("kw").send_keys("seleniumm") #输入框输入内容
driver.find_element_by_id("kw").send_keys(Keys.BACK_SPACE) #删除多输入的一个 m
driver.find_element_by_id("kw").send_keys(Keys.SPACE) #输入空格键
driver.find_element_by_id("kw").send_keys(Keys.CONTROL,'a')#ctrl+a 全选输入框内容
driver.find_element_by_id("kw").send_keys(Keys.CONTROL,'x')#ctrl+x 剪切输入框内容
driver.find_element_by_id("kw").send_keys(Keys.CONTROL,'v')#ctrl+v 粘贴内容到输入框
driver.find_element_by_id("su").send_keys(Keys.ENTER)#通过回车键盘来代替点击操作
4.单选复选框操作
(1).单选: radio
首先是定位选择框的位置,定位 id,点击就可以了 ,即可完成单选的选择。
driver.find_element_by_id("xxx").click()
(2).复选框: checkbox
勾选单个框,比如勾选 selenium 这个,可以根据它的 id=c1 直接定位到点击就可以了
全部勾选,可以用到定位一组元素,从上面源码可以看出,复选框的type=checkbox,这里可以用 xpath 语法: .//*[@type='checkbox']
这里注意,敲黑板做笔记了: find_elements 是不能直接点击的,它是复数的,所以只能先获取到所有的 checkbox 对象,然后通过 for 循环去一个个点击操作判断是否选中: is_selected()
from selenium import webdriver
driver = webdriver.Firefox()
driver.get("file:///C:/Users/Gloria/Desktop/checkbox.html")
s = driver.find_element_by_id("boy").is_selected() # 没点击操作前,判断选项框状态
print s
driver.find_element_by_id("boy").click() # 点击后元素
r = driver.find_element_by_id("boy").is_selected() # 点击后,判断元素是否为选中状态
print r
driver.find_element_by_id("c1").click()# 复选框单选
checkboxs = driver.find_elements_by_xpath(".//*[@type='checkbox']") # 复选框全选
for i in checkboxs:
i.click()
5.select下拉框操作
(1).二次定位
1.定位 select 里的选项有多种方式,这里先介绍一种简单的方法:二次定位
2.基本思路,先定位 select 框,再定位 select 里的选项
s = driver.find_element_by_id('xxx') # 分两步:先定位下拉框,再点击选项
s.find_element_by_xpath("//option[@value='50']").click()
还有另外一种写法也是可以的,把最下面两步合并成为一步:
driver.find_element_by_id("nr").find_element_by_xpath("//option[@value='50']").click()
( 2).直接定位
通过xpath或是css一次性直接定位到 option 上的内容
driver.find.element_by_xpath(".//*[@id='xxx']/option[2]").click()
(3).通过索引定位
from selenium.webdriver.support.select import Select # 导入 select 模块 Select类
select_by_index() #通过索引定位
select_by_index(2) #(从 0 开始计数)如选择第三个选项:
s = driver.find_element_by_id('xxx')
Select(s).select_by_index(2)
select_by_value() #通过 value 值定位 select_by_value("1")
6. 文件上传
F12查看源代码,看文件属性如果是input属性
<input id="file_name" class="text-1 w255" type="text" readonly="" value="" data-file=""/>
直接 send_keys(“文件地址”)
file=driver.find_element_by_name("files")
file.send_keys("C:\\Users\\Administrator\\Pictures\\Saved Pictures\\hello.jpg")
但有的研发的同学做成了 readonly 属性的input 需要另外的方法
https://www.cnblogs.com/BlueSkyyj/p/7523844.html
3. 元素定位
selenium共有八种元素定位的方法,分别为id、name、class、tag、link、partial_link、xpath及css。



从元素属性可以分析出,有个href = "http://www.hao123.com,说明它是个超链接,对于这种元素,可以用以下方法

有时候一个超链接它的字符串可能比较长,如果输入全称的话,会显示很长,这时候可以用一模糊匹配方式,截取其中一部分字符串就可以了,如“hao123”,只需输入“ao123”也可以定位到。

xpath即为XML路径语言,一种元素定位方法,就是查找元素的路径,基本格式为://*[@+元素],可以通过元素的id、name、class这些属性定位,如下图


css:
1.css可以通过元素的id、class、tag这三个常规属性直接定位到
2.如下是百度输入框的的html代码:
<input id="kw" class="s_ipt" type="text" autocomplete="off" maxlength="100" name="wd"/>
3.css用#号表示id属性,如:#kw
4.css用.表示class属性,如:.s_ipt
5.css直接用标签名称,无任何标示符,如:input
