# aardio 范例: 使用 chrome.driver 实现网页自动化操作



```aardio
//使用 chrome.driver 实现网页自动化操作
import chrome.driver;

/*
创建 chromeDriver 对象，支 Chrome，Edge（Chromium），Supermium 等相同内核浏览器。 
自动检测 chromeDriver 版本，并在必要时自动下载匹配版本的chromeDriver。
*/
var driver = chrome.driver();  
//协议文档 https://w3c.github.io/webdriver

//排除参数，不显示"正受到自动测试软件的控制"，老版本 Chrome 可能会有更大的弹框，新版没问题
//driver.removeArguments("--enable-automation")

//添加 Chrome 启动参数
//driver.addArguments("--start-maximized") 
//driver.addArguments("--incognito") //无痕模式
//driver.addArguments("--headless") //无痕模式，看不到界面

/*
Chrome 启动参数参考:
https://peter.sh/experiments/chromium-command-line-switches/
*/

var driver = chrome.driver();

/*
//设置代理服务器
driver.setProxy(
    proxyType = "manual";
    httpProxy = "127.0.0.1:12043"
)
*/

//创建会话，打开chrome浏览器，调用参数仅用于演示( 可以省略 )。
var browser = driver.startBrowser( {
    loggingPrefs  = { browser = 'ALL', performance = 'ALL', };
	perfLoggingPrefs = {
    	enableNetwork = true,
    	enablePage= false,
    	enableTimeline = false
	} 
});

//打开网页
browser.go("https://www.aardio.com/zh-cn/docs/")

//查找文本输入框,返回的 DOM 对象也可以使用ququerySelector继续查找子节点
var ele = browser.querySelector("body").querySelector("#search-input"); 

// ele.setValue( "多线程" ) //修改值

//在网页输入文本，并发送按键。
ele.sendKeys( "多线程" ,"ENTER"  ) 

/*
可用键名定义于 chrome.driver.keys ，键名与 key,key.VK 库基本兼容。
如果要将键名设为普通文本，可改用 ele.setValue( "ChromeDriver","ENTER" )
*/

//调用 JS，并且可以返回值（也可以返回 DOM 节点对象）
var searchButton = browser.doScript(` 
		//可以使用arguments访问aardio传来的参数
		return arguments[0].querySelector("#search-button");
	`
	,browser.querySelector("body")//可以传任意个调用参数给JS,还可以直接传DOM节点对象
)


//JS 返回的 DOM 节点对象也可以操作控制
searchButton.click();

//等待网址
browser.waitUrl("多线程");

//打开新窗口(标签页)
browser.doScript("window.open('https://httpbin.org/cookies')");

//关闭原来的窗口(标签页)
browser.close();

//等待网址
browser.waitUrl("httpbin");

//修改 cookie
var ret,err = browser.cookie( { 
	cookie = { name = "GUID",value = "09031171412667840400",domain="httpbin.org"} 
} )

//调用 CDP 命令
var ret,err = browser.cdp("Network.getCookies",{urls={"https://httpbin.org"}},);
var cookies = ret[["value"]];
 
//driver.startBrowser() 指定 loggingPrefs, perfLoggingPrefs
//var log = browser.se.log(type="performance"); //获取日志

browser.refresh();
```

