目的
- 熟悉selenium webdriver 代码套路
- 体验元素定位的最简单情形
- 学会如何模拟输入键盘按键
如何学习
将代码抄一遍,然后精读一遍,了解每一行代码的意义。
场景
本节我们需要使用selenium打开chrome浏览器,跳转到百度首页(http://www.baidu.com),在搜索框中输入selenium并按下回车键。
代码
新建文件simple_automation_script.js,并键入下面的内容。
var webdriver = require('selenium-webdriver'),
By = webdriver.By,
Key = webdriver.Key;
var dr = new webdriver.Builder().forBrowser('chrome').build();
dr.get('http://www.baidu.com')
dr.findElement(By.id('kw')).sendKeys('selenium');
dr.findElement(By.id('kw')).sendKeys(Key.RETURN);
console.log('quit driver');
dr.quit();
运行
在命令行中运行
node simple_automation_script.js
常见错误
WebDriverError: unknown error: unhandled inspector error: {"code":-32000,"message":"Cannot navigate to invalid URL"}
这是get时url拼写错误导致的,检查dr.get('http://www.baidu.com')
这一行url地址是否准确。
NoSuchElementError: no such element: Unable to locate element: {"method":"css selector","selector":"*[id="www"]"}
selenium找不到元素时会报的错,这是selenium开发者最常见的错误,没有之一。上面错误提示中很明确的告诉我们,页面上没有id为www的元素。遇到这种问题时,我们需要多尝试几种定位元素的方式。
总结
new webdriver.Builder('browser name').build()
语句可以打开我们指定的浏览器,另外使用Builder,我们还可以使用环境变量在运行时动态指定浏览器类型,这对于持续集成来说非常方便;dr.findElement(By.id('element id'))
语句使用id来定位具体的元素;
pylove 创建于 2020-12-16 17:41:21
最新代码: (```) const {Builder,By,Key} = require('selenium-webdriver');
(async function myFunction() { let driver = await new Builder().forBrowser('chrome').build(); await driver.get('http://www.baidu.com'); await driver.findElement(By.id('kw')).sendKeys('selenium' + Key.ENTER); await console.log('quit driver'); //await driver.quit(); })(); (```)
pylove 创建于 2020-12-16 17:40:25
node:28016) UnhandledPromiseRejectionWarning: NoSuchSessionError: invalid session id (Driver info: chromedriver=2.46.628402 (536cd7adbad73a3783fdc2cab92ab2ba7ec361e1),platform=Windows NT 10.0.17134 x86_64) 会报这个错,这个应该是异步执行的,没有输完就把浏览器关闭了
奔跑的蜗牛 创建于 2019-05-09 17:00:06