第三节、元素操作及相关属性的获取、部分浏览器控件功能实现

说明,以下均为查找到的元素返回的对象的方法

操作元素

  • 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、自主识别
需要注意的是,第三四种方法,必须在上线后,修正

posted @ 2021-02-26 22:27  挑灯  阅读(134)  评论(0)    收藏  举报