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位,版本要与浏览器一致)
NuGet安装包
安装好后已自动添加引用,手动添加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:\selenum\AutomationProfile"

通过参数启动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变量。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值