首页 > 其他分享 >29.capability 配置参数解析与 分布式运行

29.capability 配置参数解析与 分布式运行

时间:2023-12-29 14:55:05浏览次数:24  
标签:ceshiren driver selenium 29 capability https text import 分布式

目录

  • capability概述
  • capability配置
  • Selenium Grid简介
  • 分布式运行

capability概述

  • Capabilities是WebDriver支持的标准命令之外的扩展命令(配置信息)
  • 配置web驱动的属性,如浏览器名称、浏览器平台等。
  • 结合Selenium Grid完成分布式、兼容性等测试
  • 官网地址: https://www.selenium.dev/zh-cn/documentation/webdriver/capabilities/shared/

capability 使用示例-Python

 
"""
=====Python版本=====
__author__ = '霍格沃兹测试开发学社'
__desc__ = '更多测试开发技术探讨,请访问:https://ceshiren.com/t/topic/15860'
"""
import time
from selenium import webdriver
from selenium.webdriver.common.by import By


def test_ceshiren():
    # 切换成 windows 就会报错
    capabilities = {"browserName":"chrome","platformName":"mac"}
    # 通过 desired_capabilities 添加配置信息
    driver = webdriver.Chrome(desired_capabilities=capabilities)
    driver.implicitly_wait(5)
    driver.get("https://ceshiren.com/")
    # 输入框输入搜索内容[霍格沃兹测试学院]
    text = driver.find_element(By.CSS_SELECTOR, ".login-button").text
    # 点击搜索按钮
    print(text)
    time.sleep(30)
    driver.quit()

capability 使用示例-Java

 
import org.junit.jupiter.api.Test;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;

/**
 * @Author: 霍格沃兹测试开发学社
 * @Desc: '更多测试开发技术探讨,请访问:https://ceshiren.com/t/topic/15860'
 */

public class CapabilityTest {
    @Test
    void ceshiren(){
        ChromeOptions chromeOptions = new ChromeOptions();
        chromeOptions.setCapability("platformName", "mac");
        chromeOptions.setCapability("browserName", "chrome");
        WebDriver driver = new ChromeDriver(chromeOptions);
        driver.get("https://ceshiren.com/");
        String text = driver.findElement(By.cssSelector(".login-button")).getText();
        System.out.println(text);
        driver.quit();

    }

}

Selenium Grid

 
@startuml
title 分布式

node 主节点 as node1

cloud Linux主机 as linux
cloud Windows主机 as windows
node 火狐浏览器 as firefox
node 其他浏览器 as other
node 谷歌浏览器v101 as 101
node 谷歌浏览器v100 as 100

node1 --> linux 
node1 --> windows 
linux --> 101
linux --> 100
linux --> firefox
linux --> other


@enduml
  • Selenium Grid 允许我们在多台机器上并行运行测试,并集中管理不同的浏览器版本和浏览器配置(而不是在每个单独的测试中)。

  • 官网地址:https://www.selenium.dev/documentation/grid/

演示环境

  • 学院搭建的演示环境:https://selenium-node.hogwarts.ceshiren.com/ui#
  • (搭建教程会在 docker 章节讲解)
  1. 保证本地可以正常调通
  2. 实例化Remote()类并添加相应的配置
    • 远程地址
    • 设备配置

代码示例-Python

def test_ceshiren2():
    hogwarts_grid_url = "https://selenium-node.hogwarts.ceshiren.com/wd/hub"
    capabilities = {"browserName":"chrome","browserVersion":"101.0"}
    # 配置信息
    # 实例化Remote,获取可以远程控制的driver实例对象
    # 通过 command_executor 配置selenium hub地址
    # 通过 desired_capabilities 添加配置信息
    driver = webdriver.Remote(
        command_executor=hogwarts_grid_url,
        desired_capabilities=capabilities)
    driver.implicitly_wait(5)
    driver.get("https://ceshiren.com/")
    # 输入框输入搜索内容[霍格沃兹测试学院]
    text = driver.find_element(By.CSS_SELECTOR, ".login-button").text
    # 点击搜索按钮
    print(text)
    time.sleep(3)
    driver.quit()

代码示例-Java

import org.junit.jupiter.api.Test;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeOptions;
import org.openqa.selenium.remote.RemoteWebDriver;

import java.net.MalformedURLException;
import java.net.URL;

/**
 * @Author: 霍格沃兹测试开发学社
 * @Desc: '更多测试开发技术探讨,请访问:https://ceshiren.com/t/topic/15860'
 */

public class CapabilityTest {
    
    @Test
    void remoteCeshiren() throws MalformedURLException {
        ChromeOptions chromeOptions = new ChromeOptions();
        chromeOptions.setCapability("browserVersion", "101.0");
        chromeOptions.setCapability("browserName", "chrome");
        WebDriver driver = new RemoteWebDriver(
                new URL("https://selenium-node.hogwarts.ceshiren.com/wd/hub"),
                chromeOptions);
        driver.get("https://ceshiren.com/");
        String text = driver.findElement(By.cssSelector(".login-button")).getText();
        System.out.println(text);
        driver.quit();
    }
}

标签:ceshiren,driver,selenium,29,capability,https,text,import,分布式
From: https://www.cnblogs.com/csfsz/p/17934876.html

相关文章

  • 2023.12.29日报
    首先要说,date类型敲的多了写标题格式的时候都写成了(2023-12-29(笑)),今天基本上完成了财务的业务流程在整个开发过程中充斥着各种各样的问题,其实到最后也不是很明白,今天主要是对昨天完成的内容做了一个细化,主要是突然意识到自己核算工资的方式实在是过于粗暴了,像极了挂电线杆的那类......
  • 南外集训 2023.12.29 T1
    首先枚举宝藏所在的点,设为根\(rt\),考虑如果在某个时刻访问了若干个点,但是没有确定宝藏位置,那么满足什么条件。首先求出这些点的LCA,设为点\(p\),\(p\)不可以是\(rt\)。我们发现这时候我们已经确认了宝藏到\(p\)的距离,而且知道它不属于p的哪些子树(所有存在被访问点的子树)。......
  • 基于 WinCC OA 构建分布式可视化平台
    ​WinCCOA的全称是:SIMATICWinCCOpenArchitecture,是西门子工业自动化品牌SIMATIC系列的一部分。专门针对客户定制大型和/或复杂的应用以及需要满足特定系统需求和功能的项目等。 SIMATICWinCCOA代表:面向对象支持不同的工程设计和灵活的工厂扩展分布式系统中最......
  • 2023-2024-1 20231329 《计算机基础与程序设计》第14周学习总结
    作业信息这个作业属于哪个课程2023-2024-1-计算机基础与程序设计https://edu.cnblogs.com/campus/besti/2023-2024-1-CFAP这个作业要求在哪里2022-2023-1计算机基础与程序设计第14周作业(https://www.cnblogs.com/rocedu/p/9577842.html)这个作业的目标《C语言程......
  • 基于DID实现第三方应用的分布式身份登录
    在我们掌握了DID的基础知识(还没有掌握DID基础知识?请先阅读我之前的关于DID的文章),构建DID平台的时候,DID的常见应用就是基于DID实现第三方平台的登录。接下来,我们假设已经构建了一个基础的DID平台,用长安链实现了DID文档的链上管理,并提供了DID钱包托管用户的公私钥和VC证书,建设全新的......
  • 分布式I/O在汽车制造领域的应用
    随着制造行业的不断发展和技术进步,生产线的复杂性和智能化需求越来越高。分布式I/O技术,作为现代工业自动化的重要组成部分,正逐渐在制造行业中展现出其独特的优势和应用价值。在制造行业,传统集中式控制系统存在着信号传输延迟、布线复杂、扩展性差等问题。随着生产线规模的扩大和智......
  • 分布式I/O助力医药行业实现高效生产控制
    分布式I/O在医药行业的应用正逐渐受到关注。这种技术为医药制造、包装和检验等环节提供了高效、精确的控制和监测手段,从而确保了产品质量和生产安全。分布式I/O能够提高医药生产的效率。在医药制造过程中,需要严格控制各种工艺参数,如温度、压力、流量和浓度等。分布式I/O可以实时采......
  • 分布式IO如何提升工业自动化生产效率
    随着工业自动化技术的不断发展,分布式IO在工业自动化领域的应用越来越广泛。作为一种先进的控制技术,分布式IO能够实现设备的分布式控制和监测,提高生产效率、降低能耗和减少故障率。分布式IO可以提高工业自动化生产的效率。在传统的工业自动化生产中,设备的控制和监测通常采用集中式控......
  • 测试开发 | 人工智能与分布式计算:驱动智能时代的强力结合
    随着人工智能的迅猛发展,处理庞大数据集的需求不断增长。在这一背景下,分布式计算成为推动人工智能创新的关键技术之一。本文将探讨人工智能与分布式计算的密切关系,以及它们如何协同工作,推动智能时代的到来。1.引言人工智能的广泛应用使得数据处理的规模不断扩大,传统的单机计算已经......
  • 如何用Redis构建分布式锁系统?
       对常见的加锁场景的归纳,只涉及到了JVM的api锁和redis的分布式锁。其实也可以用zookeeper或者mysql,其他的以后在分享吧,其实最完美的还是老外那套saga状态机解决分布式事务比较完美,缺点就是难度很大要用到领域驱动的思想,国内普遍用的贫血模型,切换到DDD还是需要些时间研究......