首页 > 其他分享 >Selenium 元素定位方式封装的实际应用

Selenium 元素定位方式封装的实际应用

时间:2023-03-13 15:33:20浏览次数:43  
标签:定位 封装 loc Selenium driver locator type find def

一、定位方式

 

 二、实际应用

1、项目结构

 

 

2、locator_base.py 文件

# -*- coding: utf-8 -*-
from selenium.webdriver.common.by import By

# 元素定位方式
def locator(driver, find, type, loc):
      global element
      find_dict = {"ele": driver.find_element, "eles": driver.find_elements}

      locator_dict = {
          "id": By.ID,
          "name": By.NAME,
          "class": By.CLASS_NAME,
          "tag": By.TAG_NAME,
          "link": By.LINK_TEXT,
          "partial_link": By.PARTIAL_LINK_TEXT,
          "xpath": By.XPATH,
          "css": By.CSS_SELECTOR
      }

      if type in [key for key in locator_dict.keys()]:
          element = find_dict[find](locator_dict[type], loc)
          return element
      else:
         raise NameError("元素定位方式发生错误!")

# send_keys()
def send(driver, find, type, loc, data):
    try:
        locator(driver, find, type, loc).send_keys(data)
        print("【{0}】输入成功".format(data))
    except:
        print("输入失败")

# click()
def click(driver, find, type, loc):
    try:
        locator(driver, find, type, loc).click()
        print("点击成功")
    except:
        print("点击失败")

3、test_case.py 文件

# -*- coding: utf-8 -*-
from eleFZ.locator_base import locator, send, click
from selenium import webdriver
from time import sleep
import unittest

class Test_yyds(unittest.TestCase):
    """测试Demo"""

    @classmethod
    def setUpClass(self):
        global driver
        driver = webdriver.Chrome()
        driver.get("https://www.baidu.com/")

    def test_a_input(self):
        """用例1"""
        send(driver, "ele", "id", "kw", "保你平安")
        click(driver, "ele", "id", "su")
        sleep(3)

    @classmethod
    def tearDownClass(cls) -> None:
        driver.close()

if __name__ == '__main__':
    unittest.main()

 

 

 

标签:定位,封装,loc,Selenium,driver,locator,type,find,def
From: https://www.cnblogs.com/TSmagic/p/17211568.html

相关文章

  • 深入理解ES6--用模块封装代码
    用模块封装代码在模块顶部创建的变量不会自动被添加到全局共享作用域(模块顶部this的值为undefined),必须导出后,外部代码才可访问。浏览器中使用模块​​<script>​​的type属......
  • 元素定位
    HTML元素:HTML元素以开始标签起始,以结束标签终止HTML元素可以设置属性有些HTML元素具有空内容,它可以在开始标签中进行关闭,如<br/>大部分HTML元素都可以拥有属性 HT......
  • 在chrome-console中进行xpath/css/js定位(六)
    1.xpathconsole中调用xpath的基本格式:$x("xpath表达式")1.1绝对定位与相对定位绝对定位:$x("/xpath表达式")相对定位:$x("//xpath表达式") 1.2通配符与不包含筛......
  • selenium学习记录
    环境配置执行driver=webdriver.Firefox()出错Message:'geckodriver'executableneedstobeinPATH下载geckodriver.exe,下载地址:mozilla/geckodriver。将文件解......
  • (P20)从一个实例看数据抽象与封装:用C的方式实现栈 ,用C++数据抽象的方式实现栈
    文章目录​​1.用C的方式实现栈​​​​2.用C++数据抽象的方式实现栈​​1.用C的方式实现栈(1)入栈往栈中压入一个数据项的过程:初始状态:head——>NULL;栈的头指针head指向NU......
  • Java面向对象的三大特性:封装、继承、多态
    1、封装  封装的特点:高内聚,低耦合,说白了就好比电视机,它把里面的线路都给隐藏了,只留给我几个接口供我们使用。高类聚就是类的内部数据细节由自己来完成,不允许外部干涉,低......
  • selenium - 图形验证码
    [selenium-图形验证码-小林同学_Scorpio-博客园](https://www.cnblogs.com/xiaolintongxue1/p/16072390.html)使用第三方库识别图片中的验证码:博猪最开始用:pillow+......
  • web自动化测试-元素定位(四)
    对浏览器的控制,通过webdriver对象对网页内容(元素)的控制,通过webElement对象元素定位,实际上就是通过webdriver,获取webElement的过程selenium提供了8个定位策略1.什么是元......
  • 环境问题如何定位
    部署环境,优先部署网关和user服务,把登陆页面部署成功后,进入页面点击对应模块根据具体报错缺少什么部署什么。关注域名配置是否正确,如果错误找op配置nginx,找前端开发修改请......
  • Selenium显示等待常用的等待条件ExpectedConditions
       newWebDriverWait(Drivers._driverInstance,newTimeSpan(0,0,2)).Until(ExpectedConditions.InvisibilityOfElementLocated(locator));ExpectedConditions.Inv......