前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >2.UI自动化测试框架搭建-元素查找

2.UI自动化测试框架搭建-元素查找

作者头像
zx钟
发布2022-03-29 16:37:22
3530
发布2022-03-29 16:37:22
举报
文章被收录于专栏:测试游记

1.UI自动化测试框架搭建-yaml文件管理定位元素 中已经可以拿到元素了,后面就需要对元素进行操作。所有操作最基础的就是要先找到元素

查找元素

在最开始使用Selenium的时候,一般都使用find_element_by_xxx来进行元素的定位

简单阅读一下该接口的操作

代码路径:

/site-packages/selenium/webdriver/remote/webdriver.py

代码语言:javascript
复制
def find_element_by_xpath(self, xpath):
    return self.find_element(by=By.XPATH, value=xpath)

所以我们使用find_element函数+定位方式+定位语句

定位方式

需要将之前的字符串变为By.XX形式,使用字典做一次映射,因为要兼容APP端,所以mobileby部分也需要做映射

  • /site-packages/selenium/webdriver/common/by.py
  • /site-packages/appium/webdriver/common/mobileby.py
代码语言:javascript
复制
from selenium.webdriver.common.by import By
from appium.webdriver.common.mobileby import MobileBy

type_dict = {
    "id": By.ID,
    "xpath": By.XPATH,
    "link_text": By.LINK_TEXT,
    "partial_link_text": By.PARTIAL_LINK_TEXT,
    "name": By.NAME,
    "tag_name": By.TAG_NAME,
    "class_name": By.CLASS_NAME,
    "css_selector": By.CSS_SELECTOR,
    "ios_predicate": MobileBy.IOS_PREDICATE,
    "ios_uiautomation": MobileBy.IOS_UIAUTOMATION,
    "ios_class_chain": MobileBy.IOS_CLASS_CHAIN,
    "android_uiautomator": MobileBy.ANDROID_UIAUTOMATOR,
    "android_viewtag": MobileBy.ANDROID_VIEWTAG,
    "android_data_matcher": MobileBy.ANDROID_DATA_MATCHER,
    "android_view_matcher": MobileBy.ANDROID_VIEW_MATCHER,
    "windows_ui_automation": MobileBy.WINDOWS_UI_AUTOMATION,
    "accessibility_id": MobileBy.ACCESSIBILITY_ID,
    "image": MobileBy.IMAGE,
    "custom": MobileBy.CUSTOM,
}
locator_t = (type_dict[locator.by_type], locator.element)

这时的locator_t就相当于拿到了find_element函数的入参了

所以通过下面语句就能完成元素的查找了

代码语言:javascript
复制
# { desc: "挂号",type: "xpath",value: '//p[text()="挂号"]', name: "registered" }
driver.find_element(By.XPATH, value='//p[text()="挂号"]')

# 把内容代入进去
(type_dict[locator.by_type], locator.element) =>
(type_dict["xpath"], '//p[text()="挂号"]') =>
(By.XPATH, '//p[text()="挂号"]') =>
('xpath', '//p[text()="挂号"]')
代码语言:javascript
复制
driver.find_element(*locator_t)

=> driver.find_element('xpath', '//p[text()="挂号"]')

小技巧:元素高亮

通过执行js代码,临时的对要查找的元素进行红色边框标记,可以方便查看运行步骤

代码语言:javascript
复制
element = driver.find_element(*locator_t)

driver.execute_script("arguments[0].setAttribute('style',arguments[1]);",
                               element, "border:2px solid red;")

小结

到这里框架中的PO模型就完成了,下面把它封装成一个基类

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-03-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 测试游记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 查找元素
    • 定位方式
      • 小技巧:元素高亮
      • 小结
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档