C# Selenium Edge 驱动下的常见用法

using OpenQA.Selenium;
using OpenQA.Selenium.Edge;
using OpenQA.Selenium.Support.UI;

//添加缩放属性  将浏览器缩放设为100%  
EdgeOptions options=new EdgeOptions();
options.AddArgument("force-device-scale-factor=1");

//不需添加额外属性 options可不写  直接 var driver = new EdgeDriver()
using (var driver = new EdgeDriver(options))
{
    //打开指定Url路径
    driver.Navigate().GoToUrl("https://test.com");

//将浏览器全屏化

    driver.Manage().Window.Maximize();
    
    try
    {

      /可添加等待时间  等待网页加载  直至某元素出现
        WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(10));

        //等待直到标题出现
        //wait.Until(d=>d.Title.Contains("Example Domain"));

        //等待特定元素出现
        //等待Test按钮出现
        wait.Until(d => d.FindElement(By.Id("test-button")).Displayed);
        //查找按钮元素并点击
        IWebElement buttonElement = driver.FindElement(By.Id("test-button"));
        buttonElement.Click();


        //网页跳转后  等待网页加载
        System.Threading.Thread.Sleep(1000);
        //直到某元素出现  by -name
        wait.Until(d => d.FindElement(By.Name("username")).Displayed);

         //by -css
        //wait.Until(d => d.FindElement(By.CssSelector("input[class='test']")).Displayed);
        // wait.Until(d => d.FindElement(By.XPath("//input[@name='test 1  color 1']")).Displayed);

        //获取class包含test的元素

        IWebElement input_name = driver.FindElement(By.CssSelector("input[class*='test']"));
        //往input框赋值
        input_name.SendKeys("test");
       

        //不好获取ID、Name、Class时,可采用XPath方式

        wait.Until(d => d.FindElement(By.XPath("//button[@type='submit']")).Displayed);
        //wait.Until(d => d.FindElement(By.CssSelector("input[type='submit']")).Displayed);
        //wait.Until(d => d.FindElement(By.ClassName("test")));
        buttonElement = driver.FindElement(By.XPath("//button[@type='submit']"));
      
        buttonElement.Click();

  //Radiobutton 的获取

        //wait.Until(d => d.FindElement(By.XPath("//input[@type='type1' and @name='name' and @value='1']")).Displayed);
        //IWebElement radio_name = driver.FindElement(By.XPath("//input[@type='type' and @name='name' and @value='1']"));
       // radio_name.Click();

     //By Class  获取按钮

        wait.Until(d => d.FindElement(By.ClassName("test-button")).Displayed);
        
        buttonElement = driver.FindElement(By.ClassName("test-button"));
        buttonElement.Click();
        //By XPath  获取a 、i 标签
        //wait.Until(d => d.FindElement(By.XPath("//i[@class='tets test-color-green test-status-ok-core']")).Displayed);
     
        //wait.Until(d => d.FindElement(By.XPath("//a[@Test-click='redirectToselectedTest(TestStatusSystem.id)']")).Displayed);

        IWebElement test_div = driver.FindElement(By.Id("test_div"));
        //获取test_div中的所有div
        //var div_count = test_div.FindElements(By.TagName("div"));

       //只获取test_div里最外层div
        var div_count = sys_div.FindElements(By.XPath("./div"));
       

//获取Strong元素的外层a标签方法
       
        wait.Until(d => d.FindElement(By.XPath("//strong[@id='test']/parent::a")).Displayed);

        buttonElement = driver.FindElement(By.XPath("//strong[@id='test']/parent::a"));
        buttonElement.Click();

      
        //执行JavaScript脚本来滚动页面
        IJavaScriptExecutor js = (IJavaScriptExecutor)driver;
        js.ExecuteScript("window.scrollTo(0,document.body.scrollHeight)");

        

        //下拉到指定标签位置 如: label translate="test"
        IWebElement targetElement = driver.FindElement(By.XPath("//label[@test']"));
        js.ExecuteScript("arguments[0].scrollIntoView(true);", targetElement);

      //勾选CheckBox

        //wait.Until(d => d.FindElement(By.Id("cb_ck")).Displayed);
        //IWebElement checkbox = driver.FindElement(By.Id("cb_ck"));
        //if (checkbox.Selected == false)
        //{
        //    checkbox.Click();
        //}

       
       
    }
    catch(Exception ex)
    {
        MessageBox.Show(ex.Message);
        
    }
    
}

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

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

相关文章

若依jar包运行脚本,从零到一:用Bash脚本实现JAR应用的启动、停止与监控

脚本使用说明: 启动应用:sh app.sh start停止应用:sh app.sh stop检查应用状态:sh app.sh status重启应用:sh app.sh restart 注意事项: 请确保你的系统上安装了 Java 环境,并且 ruoyi-admin…

Android11实现能同时开多个录屏应用(或者共享屏幕或投屏时录屏)

1.概述 Android原生对MediaProjection的管理逻辑,是如果服务端已经保存有MediaProjection的实例,那么再次创建的时候,之前的MediaProjection实例就会被暂停,并且引用指向新的实例,也就导致了当开启后一个录屏应用时&a…

Cookie 信息泄露 Cookie未设置http only属性 原理以及修复方法

漏洞名称:Cookie信息泄露、Cookie安全性漏洞、Cookie未设置httponly属性 漏洞描述: cookie的属性设置不当可能会造成系统用户安全隐患,Cookie信息泄露是Cookiehttp only配置缺陷引起的,在设置Cookie时,可以设置的一个…

Visual Studio .NET 中常用的文件类型

Visual Studio .NET 中常用的文件类型 扩展名名称描述.slnVisual studio .NET解决方案文件.sln文件为解决方案资源管理器提供显示管理文件的图形接口所需的信息。打开.sln文件能快捷地打开整个项目的所有文件.csprojVisual C# 项目文件一个特殊的XML文档,主要用来控…

SQLiteC/C++接口详细介绍sqlite3_stmt类简介

返回:SQLite—系列文章目录 上一篇:SQLiteC/C接口详细介绍之sqlite3类(十八) 下一篇:SQLiteC/C接口详细介绍sqlite3_stmt类(一) 预准备语句对象 typedef struct sqlite3_stmt sqlite3_stmt…

【洛谷 P9232】[蓝桥杯 2023 省 A] 更小的数 题解(字符串+区间DP)

[蓝桥杯 2023 省 A] 更小的数 题目描述 小蓝有一个长度均为 n n n 且仅由数字字符 0 ∼ 9 0 \sim 9 0∼9 组成的字符串,下标从 0 0 0 到 n − 1 n-1 n−1,你可以将其视作是一个具有 n n n 位的十进制数字 n u m num num,小蓝可以从 n…

java 程序连接 redis 集群 的时候报错 MUTLI is currently not supported in cluster mode

找了半天找不到,为什么国内文章环境是真的差&#xff0c; redis 集群不支持事务&#xff0c;而你的方法上面估计使用了 spring 的事务导致错误具体解决&#xff1a; Transactional(propagation Propagation.NOT_SUPPORTED)public <T> void removeMultiCacheMapValue…

内置泵电源,热保护电路等功能的场扫描电路D78040,偏转电流可达1.7Ap-p,可用于中小型显示器。

D78040是一款场扫描电路&#xff0c;偏转电流可达1.7Ap-p&#xff0c;可用于中小型显示器。 二 特 点 1、有内置泵电源 2、垂直输出电路 3、热保护电路 4、偏转电流可达1.7Ap-p 三 基本参数 四 应用电路图 1、应用线路 2、PIN5脚输出波形如下&#xff1a;

6-高维空间:机器如何面对越来越复杂的问题

声明 本文章基于哔哩哔哩付费课程《小白也能听懂的人工智能原理》。仅供学习记录、分享&#xff0c;严禁他用&#xff01;&#xff01;如有侵权&#xff0c;请联系删除 目录 一、知识引入 &#xff08;一&#xff09;二维输入数据 &#xff08;二&#xff09;数据特征维度 …

一级指针和二级指针

一级指针 形式&#xff1a;int a 2; int *p &a; 解释&#xff1a; int*p &a表示一级指针p指向变量a的值。此时一级指针p存放的是a的地址&#xff0c;*p解引用是a的值。 作用&#xff1a; c中随处可见。不多言。 二级指针 形式&#xff1a;int a 2; int *p &…

C语言calloc函数的特点,效率低。但是进行初始化操作

#define _CRT_SECURE_NO_WARNINGS 1 #include<stdlib.h> #include<string.h> #include<errno.h> #include<stdio.h> int main() { int *p (int *)calloc(10,sizeof(int)); //初始化&#xff0c;效率低&#xff0c;然而malloc函数相反&#xf…

Linux/Ubuntu/Debian的终端中和的区别

下边举例说明&#xff1a; “cd /home & wine ps.exe”和“cd /home && wine ps.exe”之间的区别在于命令在类 Unix shell 环境&#xff08;例如 Linux 或 macOS&#xff09;中执行的方式&#xff1a; ‘cd /home & wine ps.exe’: 在此命令中&#xff0c;“…

最细致最简单的 Arm 架构搭建 Harbor

更好的阅读体验&#xff1a;点这里 &#xff08; www.doubibiji.com &#xff09; ARM离线版本安装 官方提供了一个 arm 版本&#xff0c;但是好久都没更新了&#xff0c;地址&#xff1a;https://github.com/goharbor/harbor-arm 。 也不知道为什么不更新&#xff0c;我看…

数据机构-2

线性表 概念 顺序表 示例&#xff1a;创建一个存储学生信息的顺序表 表头&#xff08;Tlen总长度&#xff0c; Clen当前长度&#xff09; 函数 #include <seqlist.c> #include <stdio.h> #include <stdlib.h> #include "seqlist.h" #include &…

Auto-DataProcessing:一组让制作数据集变轻松的脚本

前言 最近跟同学参加了个比赛&#xff0c;我负责Object-Detection的技术实现&#xff0c;需要从网上扒大量的数据(主办方每种识别物就给了一张demo&#x1f923;)&#xff0c;发现数据准备是一个真的是一个非常重要但又耗时耗力的过程。对我来说&#xff0c;给我一类待识别的标…

sqlite简单的增删改查

1&#xff0c;插入数据 (INSERT): INSERT INTO table_name (column1, column2, column3, ...) VALUES (value1, value2, value3, ...); //示例&#xff1a; INSERT INTO employees (name, age, department) VALUES (John Doe, 30, Sales);2&#xff0c;查询数据 (SELECT): S…

路由器级联

目录 一、实现功能二、实现步骤2.1 接线步骤 三、效果3.1 常规连接3.2 路由器级联 一、实现功能 主路由器&#xff1a;可有WiFi功能&#xff0c;LAN口下接各设备&#xff0c;并接一个辅路由器辅路由器&#xff1a;开启WiFi功能&#xff0c;有线或无线下接各设备功能&#xff1…

学上一招,使用 telnet 调试邮件发送

文章目录 背景正常的debug日志报错的debug日志分析SMTP协议相关命令SMTP 命令扩展 SMTP 命令使用 telnet 测试 SMTP 通信 - 邮件调试小帮手!正常情况报错情况SMTP 响应码Java 报错信息参考🔊 背景:生产环境,在 K8s 中部署发送邮件的微服务(多实例),发现不同的 pod 发送邮…

一.Netedit的简要介绍

目录 一.Netedit的简要介绍 功能二:删除项(delete) 功能三:选择项(select) 功能四:移动项(move)

IDEA直接打包Docker镜像

以下为使用IDEA打包Docker镜像并推送到远程仓库&#xff08;使用Windows打包Docker镜像并推送到远程仓库&#xff09;教程 1 安装Docker Desktop 下载地址&#xff1a;https://www.docker.com/products/docker-desktop/ 安装成功后&#xff0c;可在cmd查看版本号 2 启动Do…