Appium如何自动判断浏览器驱动

news2024/11/24 7:24:27


问题:有的测试机chrome是这个版本,有的是另一个版本,怎么能让自动判断去跑呢??

解决办法:使用appium的chromedriverExecutableDir和chromedriverChromeMappingFile

切忌使用chromedriverExecutableDir和chromedriverChromeMappingFile时,一定不要再加chromedriverExecutable

具体appium的caps有哪些可以参考:https://github.com/appium/appium/blob/master/docs/en/writing-running-appium/caps.md

第一步:

python代码(复制以后不要忘记改路径为你自己的):

import pytest
from appium import webdriver
from appium.webdriver.common.mobileby import MobileBy
from selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions
 
 
class TestAppiumBrowser:
    def setup(self):
        """
        初始化driver
        :return:
        """
        caps = {}
        caps['platformName'] = 'android'
        caps['platformVersion'] = '6.0'
        caps['deviceName'] = 'emulator-5554'
        caps['browserName'] = 'Browser'
        caps['unicodeKeyBoard'] = 'true'
        caps['resetKeyBoard'] = 'true'
        # 切忌使用chromedriverExecutableDir和chromedriverChromeMappingFile时,一定不要再加chromedriverExecutable
        caps['chromedriverExecutableDir'] = '/放置你的那一堆chromedriver的路径/chromedriver/'
        caps['chromedriverChromeMappingFile'] = '/mapping.json文件的路径/mapping.json'

        self.driver = webdriver.Remote("http://127.0.0.1:4723/wd/hub", caps)
        self.driver.implicitly_wait(10)
 
    @pytest.mark.parametrize('search_value',["appium","软件测试","selenium"])
    def test_browser(self, search_value):
        """
        测试输入不同的关键字(使用pytest的关键字驱动),验证搜索结果条目>1条
        :param search_value:
        :return:
        """
        # 打开 http://m.baidu.com
        self.driver.get("http://m.baidu.com")
        # 百度搜索框的位置:id=index-kw
        search_input_locator = (By.ID,'index-kw')
        # 百度一下按钮的位置:id=index-bn(这里使用的MobileBy其实继承了By,用法一样,扩展一下用例的技能覆盖点)
        search_click_locator = (MobileBy.ID,'index-bn')
        # 显示等待,等待直到搜索输入框出现
        WebDriverWait(self.driver, 10).until(expected_conditions.visibility_of_element_located(search_input_locator))
        # 输入框输入参数
        self.driver.find_element(*search_input_locator).send_keys(search_value)
        # 点击【百度一下】
        self.driver.find_element(*search_click_locator).click()
        # 获取当前搜索结果页的总条目
        result_elements = self.driver.find_elements(By.CSS_SELECTOR,'.c-gap-bottom-small')
        # 断言条目数大于1
        assert len(result_elements) > 1
 
    def teardown(self):
        """
        最终退出driver
        :return:
        """
        self.driver.quit()
 

第二步:创建mapping.json文件,内容举例如下:

{
  "2.24": "52.0.2743",
  "2.7": "57.0.2987.110"
}
  

可以看看chromedriver的文件夹:

很简单,就是把各种chromedriver放进来,名字随便起,appium回自动根据mapping里配置的来取对应版本的chromedriver

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1566127.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Scala第十八章节(Iterable集合、Seq集合、Set集合、Map集合以及统计字符个数案例)

Scala第十八章节 章节目标 掌握Iterable集合相关内容.掌握Seq集合相关内容.掌握Set集合相关内容.掌握Map集合相关内容.掌握统计字符个数案例. 1. Iterable 1.1 概述 Iterable代表一个可以迭代的集合, 它继承了Traversable特质, 同时也是其他集合的父特质. 最重要的是, 它定…

Python基础中易错点分享

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 一、方法当变量使用二、字符串使用1.输出一个长句子换行时,需要使用续行符“\”,否则报错2.字符串的格式化3.字符串格式化之format()函数4.浅…

肿瘤免疫反应瀑布图(源于The Miller Lab)

目录 数据格式 绘图 ①根据剂量 ②根据type ③根据治疗响应度 添加水平线 数据格式 肿瘤免疫响应数据 rm(list ls()) library(tidyverse) library(dplyr) library(knitr)#模拟数据 # We will randomly assign the two doses, 80 mg or 150 mg, to the 56 subjects Me…

【星城战记】揭秘成本控制奥秘 如何超越个人开店!

在电玩城行业的竞争中,成本控制和运营管理是决定企业盈利能力和生存空间的关键因素。许多投资者在选择投资项目时,往往忽视了这两个方面的重要性,导致在运营过程中遭遇重重困难。而【星城战记】作为行业内的佼佼者,以其卓越的成本…

ruoyi-vue-pro 前端vue js直接import导入本地文件使用方法

第一步,删除所有依赖,否则配置以后就会启动报错: 第二步配置对应的文件格式,我当前使用的是xml文件 config.module.rule(xml).test(/\.xml$/).use(xml-loader).loader(xml-loader).end();第三步重新安装所有依赖: …

编译 amd gpu 核心态驱动 rocm kmd linux kernel

AMD 开源了专门的 ROCm 的kmd Linux Kernel, 1,下载源代码 git clone --recursive https://github.com/ROCm/ROCK-Kernel-Driver.gitcd ROCK-Kernel-Driver/git checkout rocm-6.0.22,配置kernel cp -v /boot/config-$(uname -r) .config make menuconfig Graph…

Windows下Docker安装Kafka3+集群

编写 docker-compose.yaml 主要参照:https://www.cnblogs.com/wangguishe/p/17563274.html version: "3"services:kafka1:image: bitnami/kafka:3.4.1container_name: kafka1environment:- KAFKA_HEAP_OPTS-Xmx1024m -Xms1024m- KAFKA_ENABLE_KRAFTyes- K…

Java编程使用CGLIB动态代理介绍与实战演示

文章目录 前言技术积累核心概念主要功能适用场景与JDK动态代理的对比 实战演示定义待代理的目标类实现MethodInterceptor接口使用代理对象 测试结果写在最后 前言 在Java编程中,CGLIB (Code Generation Library) 是一个强大的高性能代码生成库,它通过生…

Python网络爬虫(三):Selenium--以携程酒店为例

1 Selenium简介 Selenium是一个用于网站应用程序自动化的工具,它可以直接运行在浏览器中,就像真正的用户在操作一样。它相当于一个机器人,可以模拟人类在浏览器上的一些行为,比如输入文本、点击、回车等。Selenium支持多种浏览器&…

数据分析之POWER BI Desktop可视化应用案列

在power bi中导入数据 导入前期建好的模型 简单介绍(power bi desktop) 将右边字段全部展开 各类数据 所作的模型 在excel中是单向的,power bi 中可以是双向的 右键单击----点击属性 选择两个---在两个方向上应用安全筛选器 变为双向的…

wireshark解析grpc/protobuf的方法

1,wireshark需要安装3.20以上 下载地址:https://www.wireshark.org/ 2,如果版本不对,需要卸载,卸载方法: sudo rm -rf /Applications/Wireshark.app sudo rm -rf $HOME/.config/wireshark sudo rm -rf /…

c++|vector使用及模拟实现

目录 一、vector的介绍 二、vector的使用(常用接口) 2.1string类的成员函数 2.1.1构造函数 2.1.2析构函数 2.1.3“”运算符重载函数 2.2 迭代器(iterator) 及 对象的遍历访问 2.2.1iterator 2.2.2 operator[] && at() 2.2.4 back() && front() 2.2…

认识什么是Git

目录 1. 认识Git 1.1. 问题引入 1.2. 概念 1.3. 作用 1.4. 如何学 1.5. Git 安装 1.6. Git配置用户信息 2. Git仓库 2.1. Git 仓库(repository) 2.2. 创建 2.3. 需求 3. Git的三个区域 3.1. Git 使用时的三个区域 3.2. 工作区的内容&#…

5.动态规划

1.背包问题 (1)0/1背包问题 01背包问题即每个物品只能选1个 考虑第i件物品&#xff0c;当j<w[i]时&#xff0c;f[i][j]f[i-1][j]&#xff0c;当j>w[i]时&#xff0c;此时有两种选择&#xff0c;选择第i件物品和不选第i件物品。此时f[i][j]max(f[i-1][j],f[i-1][j-w[i]]v…

c++20协程详解(一)

前言 本文是c协程第一篇&#xff0c;主要是让大家对协程的定义&#xff0c;以及协程的执行流有一个初步的认识&#xff0c;后面还会出两篇对协程的高阶封装。 在开始正式开始协程之前&#xff0c;请务必记住&#xff0c;c协程 不是挂起当前协程&#xff0c;转而执行其他协程&a…

789. 数的范围 (二分学习)左端大右,右端小左

题目链接https://www.acwing.com/file_system/file/content/whole/index/content/4317/ 当求左端点时&#xff0c;条件是a【mid】大于等于x&#xff0c;并把右端点缩小。 当求右端点时&#xff0c;条件是a【mid】小于等于x&#xff0c;并把左端点扩大。 1.确定一个区间&…

面试复盘1 - 测试相关(实习)

写在前&#xff1a;hello&#xff0c;大家早中晚上好~这里是西西&#xff0c;最近有在准备测试相关的面试&#xff0c;特此开设了新的篇章&#xff0c;针对于面试中的问题来做一下复盘&#xff0c;会把我自己遇到的问题进行整理&#xff0c;除此之外还会进行对一些常见面试题的…

CentOSPython使用openpyxl、pandas读取excel报错

一、openpyxl报错 由于本人在centos7下使用python的openpyxl报错,所以决定使用强大的pandas。 pandas是一个快速、强大、灵活且易于使用的开源数据操作和分析工具,建立在Python语言之上。 pandas是一个广泛使用的数据分析库,它提供了高效的数据结构和数据分析工具。pandas…

new mars3d.layer.HeatLayer({实现动态修改热力图半径

1.使用热力图插件的时候&#xff0c;实现动态修改热力图效果半径 2.直接修改是不可以的&#xff0c;因为这个是热力图本身的参数。 因此我们需要拿到这个热力图对象之后&#xff0c;参考api文档&#xff0c;对整个 heatLayer.heatStyle进行传参修改。 heatStyle地址&#x…

SSL通配符证书怎么选?看这里

通配符证书&#xff0c;作为一种特殊的数字证书类型&#xff0c;以其独特的优势在网络安全领域扮演着重要角色。相较于传统的单一域名证书&#xff0c;通配符证书能够为同一主域名下的所有子域名提供安全保护&#xff0c;显著提升管理效率&#xff0c;简化证书部署流程&#xf…