node.js+selenium入门到精通

准备

  • node.js 的安装和配置
  • Selenium-webdriver

npm install -save selenium-webdriver

  • 驱动 chromedriver

npm install chromedriver

基本使用

(async ()=>{
	//导入chrome浏览器 driver
	require('chromedriver');
	//导入selenium 库
	const {Builder, By, Key, until,Button} = require('selenium-webdriver');
	//这里我使用的chrome
	const driver = new Builder().forBrowser('chrome').build() 
	await driver.get('https://blog.csdn.net/weixin_45292658/article/details/107149753') //想要打开的网址
    await driver.manage().window().maximize(); //实现浏览器窗口最大化
    //driver.quit() // 表示关闭浏览器 
    //driver.close() //表示关闭当前窗口
})()

选择器

///这里的driver和By是基本使用里面定义过
driver.findElement(By.name('btnG'));
driver.findElement({id:'btnG'});

findElements //查找多个元素By.className(classname)
By.css(selector) //css-selector
By.id(id)
By.name(name)
By.linkText(text)
By.partialLink(text)
By.xpath()
By.js()

属性获取

driver.getPageSource().then(function(souce) {console.log(souce);//获取代码

driver.getTitle().then(a=>{console.log(a)});//获取网页标题

driver.getCurrentUrl().then(a=>{console.log(a)});//获取当前url

//element为web元素对象,为findelement()的返回对象element.getText().then(b=>{console.log(“text”,b)})
//返回里面没有被隐藏的文字(不带标签)
element.getTagName().then(a=>{console.log('getTagName',a)})
//返回标签名
element.getId().then(a=>{console.log(ID,a)})
//返回这个element服务器分配的不透明id

elements.getCssValue().then(a=>{console.log('getCssValue',a)})
//返回该element的CSS属性

//其他属性:element.getAttribute(“class”).then(b=>{console.log(b)})

等待

有时对一些元素需要等待页面跳转或操作完成才会显示,如果操作耗时或者网络原因,如果该元素还没出现就进行操作可能会跑出异常,这是我们需要设置一些等待,等待该元素出现在页面上时才能进行操作

driver.wait(until.elementLocated(By.id('id')), 10000);/等待元素 

driver.wait(function() {
return driver.getTitle().then(function(title) { console.log(11111111);
return title === 'webdriver - Google Search';
});
}, 1000);

driver.wait(until.titleIs('webdriver - Google Search'), 10000)

//settimeouts
driver.manage().setTimeouts(args)

// args参数
{implicit: (number|null|undefined), pageLoad: (number|null|undefined), script: (number|null|undefined)}
implicit:等待元素加载的最大时间;pageLoad等待页面加载完成的最大时间

操作

driver.findElement({css:css}).click()//鼠标左键单击
driver.findElement({css:css}).clear(); //清空input
driver.findElement({css:css}).sendKeys('txt');//输入input

driver.takeScreenshot().then() //返回页面png截图
driver.findElement({css:css}).takeScreenshoot().then() //返回元素png截图

driver.excuteScript("document.getElementByTagName('body')[0].scrollTop='8000'")//窗口滚动条-下拉滚动条操作

driver.actions().mouseMove(el).perform() //鼠标悬停操作

options对象


let options = driver.manage()//获得options对象

options.addCookie({name: 'name', value:'value'})

options.deleteAllCookies()

cookiesoptions.deleteCookie(name) //删除所有

options.getCookie(name) //按照name删除

options.getCookies() //拿到name字段的cookie值,为promise对象

//返回所有cookies,为promise对象

navigate对象

let nav = driver.navigate()//获得navigate对象
///nav有四个方法分别为:
nav.back();//后退
nav.forward();//前进
nav.refresh();//刷新
nav.to(url);//跳转到url

猜你喜欢

转载自blog.csdn.net/weixin_45292658/article/details/108150531