selenium自动化测试常用API

1.鼠标事件

在实际的web 产品测试中鼠标事件操作步骤,有关鼠标的操作,不单单只有单击,有时候还要用到右击,双击,拖动等操作,这些操作包含在ActionChains 类中。ActionChains类提供的鼠标事件常用方法(perform()执行所有ActionChains中存储的行为):

ActionChains 类鼠标操作的常用方法:

l context_click() 右击

l double_click()  双击

l drag_and_drop() 拖动

l move_to_element() 鼠标悬停在一个元素上

click_and_hold() 按下鼠标左键在一个元素上

1.2鼠标事件操作步骤

1.引入包ActionChains()

from selenium.webdriver.common.action_chains import ActionChains

语法:

ActionChains(driver).鼠标事件方法.perform()

这里需要注意的是,在使用ActionChains类下面的方法之前,要先将包引入。

2.定位需要鼠标操作的元素

按照普通元素定位方法实现(8种元素定位方法)

3.执行鼠标事件

ActionChains()

ActionChains(driver)

driver: wedriver 实例执行用户操作。

ActionChains 用于生成用户的行为;所有的行为都存储在actionchains 对象。通过perform()执行存储的行为。

perform()执行所有ActionChains 中存储的行为。perfrome()同样也是ActionChains 类提供的的方法,通常与ActionChains()配合使用。

context_click() 右击

1.#选择需要鼠标右击的目标元素  
2.right = driver.find_element_by_css_selector('a[title="自动化相关"]')  
3.#执行鼠标右击操作  
4.ActionChains(driver).context_click(right).perform()  

double_click()  双击

1.# 定位到要双击的元素  
2.double_click = driver.find_element_by_id("id值")  
3.# 双击操作  
4.ActionChains(driver).double_click(double_click).perform()  

drag_and_drop(source, target) 鼠标拖动

在源元素上按下鼠标左键,然后移动到目标元素上释放。

source:鼠标拖动的源元素。

target:鼠标释放的目标元素。

语法:

drag_and_drop(起始元素,目标元素)  # 将起始元素,拖动到目标元素

drag_and_drop_by_offset(起始元素,x坐标,y坐标) #将起始元素,拖动到指定的坐标位置
1.# 定位元素的源位置  
2.element = driver.find_element_by_id("id值")  
3.# 定位元素要移动到的目标位置  
4.target = driver.find_element_by_xpath("定位脚本")  
5.# 拖放操作  
ActionChains(driver).drag_and_drop(element,target).perform() 

move_to_element() 悬停(将鼠标移到某个元素上)

1.# 定位到要悬停的元素  
2.above = driver.find_element_by_link_text("关键字")  
3.# 悬停操作  
4.ActionChains(driver).move_to_element(above).perform()  

click_and_hold() 按下鼠标左键在一个元素上

1.#定位到鼠标按下左键的元素  
2.left=driver.find_element_by_xpath("定位脚本")  
3.#对定位到的元素执行鼠标左键按下的操作  
4.ActionChains(driver).click_and_hold(left).perform()  

2.键盘事件(必须和send_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

send_keys(Keys.F12) 键盘F12

2.1脚本

1.from selenium import webdriver  
2.from selenium.webdriver.common.keys import Keys  
3.import time  
4.""" 
5.键盘事件 
6."""  
7.driver = webdriver.Firefox()  
8.driver.get("https://www.baidu.com")  
9.driver.find_element_by_id("kw").send_keys("Selenium")  
10.time.sleep(2)  
11.# Ctrl+A 全选操作  
12.driver.find_element_by_id("kw").send_keys(Keys.CONTROL,'a')  
13.time.sleep(2)  
14.# Ctrl+C 复制操作  
15.driver.find_element_by_id("kw").send_keys(Keys.CONTROL,'c')  
16.time.sleep(2)  
17.driver.get("http://cn.bing.com")  
18.time.sleep(2)  
19.# Ctrl+V 粘贴操作  
20.driver.find_element_by_id("sb_form_q").send_keys(Keys.CONTROL,'v')  
21.time.sleep(2)  
22.# 回车键操作  
23.driver.find_element_by_id("sb_form_q").send_keys(Keys.ENTER)  
24.time.sleep(2)  
driver.quit() 

3.下拉菜单选择

带有<select></select>标签的下拉菜单选择页面源码:

3.1 使用普通方法操作下拉菜单:

先定位下拉菜单,再定位菜单中的具体元素,对下拉菜单进行二次定位。

代码片段

1.#先定位下拉框  
2.selector = driver.find_element_by_id('id值')  
3.#操作下拉框选项 
element = selector.find_element_by_xpath('定位脚本').click() 

3.2 使用Select类来处理下拉菜单(推荐)

语法

Select(select标签元素).select_by_index()  #通过选项索引值定位  索引从0开始
Select(select标签元素).select_by_value()  #通过选项value属性值定位
Select(select标签元素).select_by_visible_text()  #通过选项的text值定位

脚本

1.from selenium import webdriver  
2.import time   
3.from selenium.webdriver.support.select import Select  #导包
  
4.driver = webdriver.Firefox()  
5.driver.get("https://www.baidu.com")  
6.#通过value来选择  
7.select.select_by_value('value值')  
8.time.sleep(2)  
9.#通过index来选择  
10.select.select_by_index(索引)  
11.time.sleep(2)  
12.#通过文本直接选择  
13.select.select_by_visible_text('关键字')  
14.time.sleep(5)  
15.driver.quit()

4.滚动条操作

WebDriver类库中并没有直接提供对滚动条进行操作方法,但是它提供了可调用JavaScript脚本的方法,所以我们可以通过JavaScript脚本来达到操作滚动条的目的

准备js脚本:

js="window.scrollTo(x,y)" #左右滑动改变x轴,上下滑动改变y轴

执行脚本:

driver.execute_script(js) #使用webdriver中execute_script()的方法执行js脚本

聚焦到某个元素位置:

#定位聚焦元素位置
target = driver.find_element_by_xxxx()

#编写聚焦元素的js脚本
js=arguments[索引值].scrollIntoView() 

#执行脚本
driver.execute_script(js,target)

5.iframe操作

iframe是前段常用的一个标签,用于HTML的页面嵌套,iframe会导致嵌套的页面的元素能定位但是实际上元素不在本页面,要定位到iframe里的元素,需要进行页面的切换

页面切换的方式:

1、switch_to.frame(id值或name值) #默认可以直接取表单的id或name属性进行切换,也可以用Xpath等。

2、switch_to.frame(索引值) #索引从0开始

3、switch_to.frame(元素定位) #通过元素定位切换

实际操作:

进入iframe中:

driver.switch_to.frame(参数)

- 1.当iframe/frame标签有固定的id/name属性值时,参数=id属性值/name属性值

- 2.当iframe/frame标签没有固定的id/name属性值时,参数=iframe/frame元素----元素定位

- 3.当知道iframe/frame标签索引值时,参数=frame/iframe索引值

操作iframe中的元素:

元素定位

元素操作

退出iframe

driver.switch_to.parent_frame()   # 退出当前层

driver.switch_to.default_content()  # 退出所有iframe

iframe在页面中的应用场景

            1.登录

            2.后台管理系统菜单栏

            3.富文本编辑器

6.多窗口切换

在超链接(a)标签里面存在target="_blank"的时候,会打开一个新的页面.

获取窗口句柄:

driver.current_window_handle #获取当前窗口句柄(原页面)

driver.window_handles #获取所有窗口句柄,返回一个列表

切换窗口:

driver.switch_to.window(窗口句柄)

driver.switch_to.window(driver.window_handles[索引值])

通过js脚本移除target属性:

js='document.getElementById("id值").removeAttribute("target") #编写脚本

driver.execute_script(js) #执行脚本

7弹窗处理

7.1原生弹窗:

alert:只有一个确定按钮

confirm:有一个确定按钮和一个取消按钮

prompt:有一个输入框,一个确定按钮和取消按钮

为什么要取消弹窗:因为存在弹窗页面将无法进行操作

处理页面上所有的原生弹窗:

alert:

变量=driver.switch_to.alert #获取所有的原生弹窗
变量.accept() #点击确认

confirm:

变量=driver.switch_to.alert #获取所有的原生弹窗
变量.accept() #点击确认
变量.dismiss() #点击取消

prompt:

变量=driver.switch_to.alert #获取所有的原生弹窗
变量.send_keys(输入的内容) #输入内容
变量.accept() #点击确认
变量.dismiss() #点击取消

7.2原生弹窗:(没有直接处理的方法,用js脚本进行处理)

js=document.getElementById("id值").style.display="none" #编写脚本

driver.execute_script(js) #执行脚本

8.选择框操作

8.1单选框:在HTML代码里type是radio且一组的单选name属性值全部一样

语法:

首先是定位选择框的位置判断是否选中,再点击

#首先定位元素位置
ele=driver.find_element_by_css_selector('定位脚本') 

# 判断元素是否被选中,如果元素被选中,不进行点击操作,反之进行点击操作  
if ele.is_selected():  
    pass  
else:  
   banana.click()

8.2复选框:在HTML代码里type是checkbox且一组的单选name属性值相同

# 有选择性的选择  
option = ["选择项1","选择项2"] 
#获取全部选项
eles = driver.find_elements_by_name("checkbox")
#遍历获取的选项
for i in eles:  
    if i.get_attribute("value") in option:  
        time.sleep(1)  
      i.click() 

8.3全部勾选:

checkboxs = driver.find_elements_by_name("checkbox")
  
for i in checkboxs:  
    if i.is_selected():  
        pass  
    else:  
        time.sleep(1)  
        i.click()  

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值