Python selenium webdriver GUI自动化测试

Selenium webdriver常用操作

1.安装pip install selenium

通过selenium库得到浏览器的驱动对象(需要下载驱动程序,不同的浏览器需要不同的 驱动对象,Firefox->geckodriver,Chrome->chromedriver)

2.得到驱动对象后,可以通过驱动对象:

Driver.get()-> 打开一个网站(需要完整的URL)
Driver.close()-> 仅仅关闭当前页面,如果他打开的仅一个窗口则退出浏览器
Driver.quit()-> 关闭驱动程序打开的所有页面,同时释放驱动对象
Os.system()/os.popen()->杀死整个驱动程序进程
Driver.maximize_window()->最大化浏览器窗口
Driver.set_window_size(x,y)-> 设置窗口的大小
Driver.back()->回退
Driver.forword()->前进
driver.refresh()->页面刷新

3.selenium常用操作:

(1)查找页面元素,并操作#

A.查找元素::Driver.find_element_by_method()

Method():
Id() -->一般来说,id属性在标签里面具有唯一性
Name()–>和id相同,一般都是标签的唯一属性
Class_name()–>相同类型的标签的属性
当class属性在页面存在多个时:可以用find_elements_by_class_name先找出所有的class属性并放入列表,再根据索引将他取出来进行操作
li = wd.find_elements_by_class_name(“el-input__inner”)
li[0].send_keys(“admin”)
li[1].send_keys(“CDDQ&1314!”)

Link_text()-->  <a>标签专用,超链接
Partial_link_text()--> <a>标签专用 ,超链接
Xpath()-->标签相对于<html>的树形结构
Css_selector()-->标签相对于css的树形结构
Tag_name()-->以标签名的方式定位
B.操作:
输入:send_keys(“ ”)
点击:click()
清空输入框:clear()
判断元素是否显示:is_displayed()

判断元素是否可使用:is_enabled()

(2)等待方式:

(1)隐式等待:driver.implicitly_wait( )
(2)显示等待:from selenium.webdriver.support.ui import WebDriverWait
Webdriverwait(driver,10,0.1).until(lambda driver:	driver .find_element_by_[method{‘xx’}]).send_keys()
(3)强制等待:time .sleep()

(3)焦点切换:

内嵌页面的方式:iframe->
	进入内嵌页面:
	 driver.switch_to.frame(id/driver.find_element_by_[method()])
	 driver.find_element_by_[method].func()
	关闭内嵌页面:
          driver.switch_to.default_content()
警告框: alt = driver.swidth_to.alert.accept()
	alt.accept()->确定
	alt.dismiss()->取消
	alt.text()->获取文本内容

(4)文件上传:

A.send_keys()

在这里插入图片描述

B.使用Autolt

请见文件:GUI自动化测试_文件处理之Autolt.xmind

(5)鼠标事件:

(1)鼠标悬浮到指定元素上方,并点击出现的对应元素信息的操作:
from selenium.webdriver.common.action_chains import ActionChains
top_menu = wd.find_element_by_xpath(data["path"])
ActionChains(wd).move_to_element(top_menu).perform()
time.sleep(2)
wd.find_element_by_xpath(data["menu_path"]).click()
(2)鼠标右键操作:
#定位到要右击的元素
qqq=driver.find_element_by_xpath("path")
#对定位到的元素执行鼠标右键操作
ActionChains(driver).context_click(qqq).perform()
(3)鼠标拖放操作:
#定位元素的原位置
element = driver.find_element_by_name("source")
#定位元素要移动到的目标位置
target =  driver.find_element_by_name("target")
#执行元素的移动操作
ActionChains(driver).drag_and_drop(element, target).perform()
(4)鼠标双击操作:
#定位到要双击的元素
qqq =driver.find_element_by_xpath("xxx")
#对定位到的元素执行鼠标双击
ActionChains(driver).double_click(qqq).perform()

(6)下拉框几种方式:

A.随机选择下拉框任意一个
1)随机选择下拉框任意一个

from selenium.webdriver.support.select import Select
#以列表形式获取下拉框元素对象
ops = Select(wd.find_element_by_xpath("")).options
#遍历对象
for ele in ops:
print(ele.text)
#根据下标随机选择下拉框任意一个
index = random.randrange(0,len(ops)-1)
Select(wd.find_element_by_xpath("")).select_by_index(index)

2)根据下拉框的文本内容选择:

Select(wd.find_element_by_xpath("")).select_by_visible_text(value)

3)根据下标索引选择:

Select(wd.find_element_by_xpath("")).select_by_index()

4)根据下拉框的值选择:

Select(wd.find_element_by_xpath("")).select_by_value()

B.如果下拉框为列表可以先获取整个下拉框并放入一个列表中,再根据索引选择下拉框的值
 li = wd.find_element_by_xpath("/html/body/div[4]/div[1]/div[1]/ul")
li[1].click()
C.可以先点开下拉框,再点击需求选取的值
wd.find_element_by_css_selector('.el-input__inner').click()
wd.find_element_by_css_selector('[x-placement='bottom-start']li:nth-of-type(2)').click()

(7)键盘事件:

from selenium.webdriver.common.keys import Keys
if data["manipulate"] == "ENTER":
		wd.find_element_by_xpath(data['path']).send_keys(Keys.ENTER)
if data["manipulate"] == "ESC":
		wd.find_element_by_xpath(data["path"]).send_keys(Keys.ESCAPE)

(8)xpath绝对路径和相对路径: 尽量不使用绝对路径

1)绝对路径:从根目录一层一层的往下找元素
/html//div[@id=‘app’]/div[@class=‘login_wrapper’]//div[@class=‘el-row’]//form[@class=‘el-form’]//input[@type=‘text’]
2)相对路径:先找对应的标签,再通过该标签下的属性寻找元素,多个属性用and连接
//标签[@属性=” ” and @属性=” “]

(9)获取元素的文本信息:

(1)text:适用于表单元素,例如:文本域、下拉框、文本框、按钮、弹出框等

在这里插入图片描述

(2)get_attribute(属性名):除了.text其他均可使用

Input标签默认有value属性,可以通过get_attribute(value)获取

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值