自动化测试selenium--webdriver常用API

自动化测试selenium(2)–webdriver常用API

简单脚本的构成

1、在脚本头部导入需要的包;

2、获取浏览器的驱动;

3、使用浏览器驱动对需要测试的文本系统进行操作;

4、测试完毕后关闭浏览器。

webdriver常用的API:
1、元素的定位:对象的定位是自动化测试的核心,操作一个对象的前提首先应识别此对象。

webdriver提供了一系列的对象定位方法。(不管使用哪种方式,必须保证页面上该属性的唯一性)

  • id :全局唯一,一定可以唯一定位到一个元素
  • name:不一定全局唯一,有可能定位不到
  • class name:不一定全局唯一,有可能定位不到
  • link text:不一定全局唯一,有可能定位不到
  • partial link text:不一定全局唯一,有可能定位不到
  • tag name:不一定全局唯一,有可能定位不到
  • xpath:一定可以定位到一个元素
  • css selector:样式
2、操作测试对象

webdriver中提供了一下几种常用的操作对象方法

  • click:点击对象
  • send_keys:在对象上模拟按键输入
  • clear:清除对象的内容
  • submit:提交
  • text:用于获取元素的文本信息
3、添加等待
  • 固定等待:time.sleep(5)------只能选择一个固定的时间的等待
  • 智能等待:browser.implicitly_wait(30) --------在一个时间范围内智能的等待,超出时间范围会抛异常
4、打印信息

打印title及URL:

print driver.title # 把页面title 打印出来
print driver.current_url #打印url
5、浏览器的操作

浏览器最大化:driver.maximize_window()

设置浏览器宽高:driver.set_window_size(480,800)

操作浏览器的前进、后退:driver.forward() driver.back()

控制浏览器滚动条:

  • 将页面滚动条拖到底部
 js="var q=document.documentElement.scrollTop=10000"
 driver.execute_script(js)
  • 将滚动条移动到页面的顶部
 js="var q=document.documentElement.scrollTop=0"
 driver.execute_script(js)
6、键盘事件
from selenium.webdriver.common.keys import Keys #需要引入keys 包

键盘按键用法:

通过send_keys()调用按键:

send_keys(Keys.TAB) # TAB
send_keys(Keys.ENTER) # 回车
#tab 的定位相当于清除了密码框的默认提示信息,等同clear()
driver.find_element_by_id("account").send_keys(Keys.TAB)
#也可定位登陆按钮,通过enter(回车)代替click()
driver.find_element_by_id("login").send_keys(Keys.ENTER)

键盘组合键用法

#ctrl+a 全选输入框内容
driver.find_element_by_id("kw").send_keys(Keys.CONTROL,'a')
#ctrl+x 剪切输入框内容
driver.find_element_by_id("kw").send_keys(Keys.CONTROL,'x')
7、鼠标事件
from selenium.webdriver.common.action_chains import ActionChains 需要引入ActionChains 包

ActionChains 类
context_click() #右击
double_click() #双击
drag_and_drop() #拖动
move_to_element() #移动

ActionChains(driver):生成用户的行为。所有的行动都存储在actionchains 对象。通过perform()存储的行为。
move_to_element(menu):移动鼠标到一个元素中,menu 上面已经定义了他所指向的哪一个元素
perform():执行所有存储的行为

from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
import time

driver = webdriver.Chrome()
url = "https://www.baidu.com/"
driver.get(url)
driver.find_element_by_id("kw").send_keys("杨紫")
driver.find_element_by_id("su").click()
#aaa = driver.find_element_by_xpath("//*[@id='s-top-left']/a[1]")
#ActionChains(driver).context_click(aaa).perform() #右键
#time.sleep(3)
#ActionChains(driver).double_click(aaa).perform() #双击
time.sleep(6)
yule = driver.find_element_by_link_text("那英杨紫回应不和")
ActionChains(driver).move_to_element(yule).perform()
time.sleep(6)
driver.quit()
8、定位一组元素

findElements

使用场景:批量操作对象。如将页面上的所有checkbox都勾选上;

​ 先获取一组对象,再在这一组对象中过滤出需要具体定位的一些对象。如定位出页面上所有的checkbox,勾选其 中一个。

from selenium import webdriver
import time
import os

driver = webdriver.Chrome()
file_path = "file:///"+os.path.abspath("D://Users//Administrator//html//checkbox.html")
driver.get(file_path)

inputs = driver.find_elements_by_tag_name("input")
for input in inputs:
    if input.get_attribute("type") == "checkbox":
        input.click()

time.sleep(3)
driver.quit()
9、多层框架/窗口定位
  • switch_to.frame() #多层框架定位

  • switch_to.window() #窗口定位

  • driver.switch_to.default_content() #从frame中嵌入的页面里跳出,跳回到最外面的原始页面中。

 from selenium import webdriver
  import time
  import os
  
  driver = webdriver.Chrome()
  file_path = "file:///"+os.path.abspath("D://Users//Administrator//html//frame.html")
  driver.get(file_path)
  
  driver.switch_to.frame("f1")
  driver.switch_to.frame("f2")
  driver.find_element_by_id("kw").send_keys("天使")
  driver.find_element_by_id("su").click()
  time.sleep(3)
  driver.quit()
10、层级定位
from selenium import webdriver
import time
import os
from selenium.webdriver.common.action_chains import ActionChains

driver = webdriver.Chrome()
file_path = "file:///"+"D://Users//Administrator//html//level_locate.html"
driver.get(file_path)

driver.maximize_window()
driver.find_element_by_link_text("Link1").click()

ele = driver.find_element_by_id("dropdown1").find_element_by_link_text("Another action")
ActionChains(driver).move_to_element(ele).perform()

time.sleep(3)
driver.quit()
11、下拉框的定位
from selenium import webdriver
import time
import os

driver = webdriver.Chrome()
file_path = "file:///"+os.path.abspath("D://Users//Administrator//html//drop_down.html")
driver.get(file_path)

driver.find_element_by_id("ShippingMethod")
options = driver.find_elements_by_tag_name("option")
time.sleep(3)
options[2].click()
for option in options:
     if option.get_attribute('value') == '9.03':
         option.click()

time.sleep(3)
driver.quit()
12、alert、confirm、prompt 的处理
  • text 返回alert/confirm/prompt 中的文字信息

  • accept ()点击确认按钮

  • dismiss() 点击取消按钮,如果有的话

  • send_keys ()在弹出框中输入值,这个alert\confirm 没有对话框就不能用了,不然会报错

  • switch_to.alert #得到操作弹框的句柄

 from selenium import webdriver
  import time
  import os
  
  driver = webdriver.Chrome()
  file_path = "file:///"+os.path.abspath("D://Users//Administrator//html//alert.html")
  driver.get(file_path)
  
  driver.find_element_by_id("tooltip").click()
  # 得到操作弹框的操作句柄,关闭弹框
  alert = driver.switch_to.alert
  alert.accept()
  
  time.sleep(3)
  driver.quit()

在alert中输入文本:

from selenium import webdriver
import time
import os

driver = webdriver.Chrome()
file_path = "file:///"+os.path.abspath("D://Users//Administrator//html//send.html")
driver.get(file_path)

driver.find_element_by_tag_name("input").click()
time.sleep(3)
alert = driver.switch_to.alert
alert.send_keys("xxx")
# alert.accept() 点击确定
alert.dismiss() #点击取消
time.sleep(3)
driver.quit()
13、div对话框处理
from selenium import webdriver
import time
import os

driver = webdriver.Chrome()
file_path = "file:///"+os.path.abspath("D://Users//Administrator//html//modal.html")
driver.get(file_path)
# 打开对话框
driver.find_element_by_link_text("Click").click()
# 定位div1
div1 = driver.find_element_by_class_name("modal-body")
div1.find_element_by_id("click").click()
time.sleep(3)
# 定位div2
div2 = driver.find_element_by_class_name("modal-footer")
div2.find_element_by_class_name("btn").click()
# 定位button
buttons = div2.find_elements_by_tag_name("button")
buttons[0].click()

time.sleep(3)
driver.quit()
14、上传文件操作

定位上传按钮,通过send_keys 添加本地文件路径。

from selenium import webdriver
import time
import os

driver = webdriver.Chrome()
file_path = "file:///"+os.path.abspath("D://Users//Administrator//html//upload.html")
driver.get(file_path)
time.sleep(3)
# 定位上传按钮,添加本地文件路径
driver.find_element_by_tag_name("input").send_keys("C:\\Users\\Administrator\\Desktop\\新建文件夹\\优盘\\新建文件夹\\截图\\a.PNG")
time.sleep(3)
driver.quit()
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值