第三节、元素操作及相关属性的获取、部分浏览器控件功能实现
说明,以下均为查找到的元素返回的对象的方法
操作元素
-
clear()
清空输入框,针对input文本框 -
send_keys("要输入的字符")
输入框输入字符串,针对input文本框 如果input的type为file类型 可以输入文件绝对路径上传文件 -
click()
单击元素,一般是超链接 -
submit()
form表单提交 # 模仿回车按钮 提交数据 -
screenshot("文件名称")
截图并保存图片 PNG格式 -
location_once_scrolled_into_view
滚动直到指定的元素在视图中,并返回该元素的坐标
获取元素属性和判断元素状态的方法
- is_displayed()
返回元素是否对用户可见,这里的可见不是肉眼看到的存在,而是html代码的存在。某些情况元素的visibility为hidden或者display属性为none - is_selected()
返回元素是否被选中 True or False,获得元素的选中状态,特指Select类型的元素,比如checkbox和radio。 - is_enabled()
存储input、select等元素的可编辑状态,可以编辑返回true,否则返回false - value_of_css_property()
元素的CSS属性中指定名称的属性值 - get_attribute("class")
根据标签属性名称,获取属性value (attribute是HTML标签上的特性,它的值只能够是字符串,由用户额外设定的特性名称和特性值。) - element.get_property('id')
获得元素指定名称的属性。(property是DOM中的属性,像是JavaScript里的对象,只要是某类型的对象就自动具备这些属性成员。)
获取元素属性
- size
获取元素尺寸,通用 - location
获取当前元素的坐标 - text
获取标签对之间的文本信息
标签元素如果不展示在页面上,获取结果为空
如果标签对中间没有值,获取到的结果也是空的
如 input 之类的单标签,获取结果也是空的
可以获取子代标签的文本值
child的元素值也能获取 - tag_name
返回标签元素的名字 - id
元素在Selenium中的内部ID,并非在DOM中的id属性 - parent
元素的父元素对象 - screenshot_as_base64
元素显示图像的二进制数据的base64编码字符串 - screenshot_as_png
元素显示图像的PNG格式二进制数据 - rect
元素的大小和位置 - location_once_scrolled_into_view
滚动直到指定的元素在视图中,并返回该元素的坐标
部分控件功能操作
- 1、下拉框选择
from selenium.webdriver.support.select import Select
# 定位到下拉框元素
ele = driver.find_element_by_id("abc")
# 根据下拉框文本选择
Select(ele).select_by_visible_text("月薪三千")
# 根据下标选择
Select(ele).select_by_index(0)
# 根据 value 属性选择
Select(ele).select_by_value("p3")
- 2、文件上传
import win32com.client
# 定位到文件上传的 input 标签
ele = driver.find_element_by_css_selector("input[type=\'file\']")
ele.send_keys("D:\\Users\lenovo\PycharmProjects\script\study\seleniumStu\day4\ele.png")
# 对于非 input 标签实现的上传功能,我们通过模拟键盘敲击的方式实现
# 触发文件上传的功能
driver.find_element_by_css_selector("figure.icon").click()
# 模拟键盘敲击,会不管不顾的敲击,只要代码运行到这里,就敲
sh = win32com.client.Dispatch("WScript.shell")
sh.Sendkeys("D:\\Users\lenovo\PycharmProjects\script\study\seleniumStu\day4\ele.png\r\n")
# 注意:代码运行过程不要操作鼠标,输入法要保持英文输入的状态
- 3、弹框
# 触发确认框
driver.find_element_by_id("bu2").click()
# 获取对象的操作是一样的
al = driver.switch_to.alert # 注意 switch_to 后面是一个点
# 确认确认框
al.accept()
# 取消确认框
al.dismiss()
# 可以获取警告框的文本信息
print(al.text)
# 可以向提示框输入文本
al.send_keys("这是我输入的内容") # 输入的内容会生效,但是不会在界面展示
其他方法
- 1、cookie操作
# 获取所有的 cookie
cookieSli = driver.get_cookies()
pprint.pprint(cookieSli)
# 根据name,获取某个cookie
cookie = driver.get_cookie("beegosessionID")
print(cookie)
# cookie登录
# 先清除所有的cookie
driver.delete_all_cookies()
for cookie in cookieSli:
# 添加 cookie
driver.add_cookie(cookie)
driver.refresh()
- 2、关于ui自动化登录的问题之验证码
a、若权限足够,则申请服务端权限,读取验证码
b、也可以在权限足够的情况下,去修改服务端验证码的值
c、若权限不足,则请开发将测试环境的验证码校验取消(此刻输入任何内容都能通过
d、测试环境设置一个万能验证码
e、自主识别
需要注意的是,第三四种方法,必须在上线后,修正

浙公网安备 33010602011771号