栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > .Net

C#.net下ChromeDriver自动化测试初体验

.Net 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C#.net下ChromeDriver自动化测试初体验

偶然发现ChromeDriver可以控制chrome浏览器做自动化测试,做了些尝试记下笔记。

原理

运行chromedriver.exe控制chrome浏览器(需版本相同,目录相同),通过编写python、java或C#程序向chromedriver.exe发送控制指令,如点击(isTrust=true)等。

C# + VS2015 + .Net4.5下安装

通过NuGet安装3个包:
1.OpenQA.Selenium.Winium——OpenQA.Selenium.Winium.dll(非必需)
2.Selenium.WebDriver.——WebDriver.dll(必需)
3.Selenium.WebDriver.ChromeDriver——chromedriver.exe(必需,win只有32位,版本要与浏览器一致)

安装好后已自动添加引用,手动添加using:

using OpenQA.Selenium.Chrome;
using OpenQA.Selenium.Interactions;
初步测试

添加一个按钮,绑定事件函数:

private void button1_Click(object sender, EventArgs e)
        {
            ChromeDriver driver = new ChromeDriver(@"Q:chrome");//chrome.exe所在目录
            driver.Navigate().GoToUrl("https://baidu.com");
        }

将chromedriver.exe复制到chrome.exe所在目录,运行程序点击按钮,程序打开chromedriver.exe和chrome.exe,成功进入百度页面。

页面操作测试

继续增加元素查找、点击、运行脚本的测试,均成功实现。值得注意的是,鼠标事件的isTrust为true,说明这个模拟操作仿真度极高,那么……→_→

private void button2_Click(object sender, EventArgs e)
        {
            ChromeDriver driver = new ChromeDriver(@"Q:chrome");
            driver.Navigate().GoToUrl("https://baidu.com");
            //Thread.Sleep(3000);
            driver.ExecuteScript("document.body.addEventListener("click",function (e){console.log(e);})");
            var search = driver.FindElementById("kw");
            search.Click();
            search.SendKeys("browser");
            var btn = driver.FindElementById("su");
            btn.Click();
        }


再附上鼠标移动模拟(间隔时间不知道怎么控制):

Actions act = new Actions(driver);
act.MoveByOffset(10,10);
 act.MoveByOffset(10, 10);
act.MoveByOffset(-10, 0);
act.Perform();

防检测

经查,在chromedriver打开的浏览器里存在变量window.navigator.webdriver,容易被网站检测到。反制方法是使用chrome远程调试:

chrome.exe --remote-debugging-port=9222 --user-data-dir="C:selenumAutomationProfile"

通过参数启动chrome,打开远程调试端口,以下代码接管:

private void button2_Click(object sender, EventArgs e)
        {
            ChromeOptions opt = new ChromeOptions();
            opt.DebuggerAddress = "127.0.0.1:9222";
            ChromeDriver driver = new ChromeDriver(@"Q:chrome", opt);
            driver.ExecuteAsyncScript("alert(0);");
        }

脚本成功运行,也检测不到webdriver变量。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/905296.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号