# （二）实战: 最简单的自动化脚本




### 目的

* 熟悉selenium webdriver 代码套路
* 体验元素定位的最简单情形
* 学会如何模拟输入键盘按键

### 如何学习

将代码抄一遍，然后精读一遍，了解每一行代码的意义。

### 场景

本节我们需要使用selenium打开chrome浏览器，跳转到百度首页(http://www.baidu.com)，在搜索框中输入selenium并按下回车键。

### 代码

新建文件simple_automation_script.js，并键入下面的内容。

```javascript

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来定位具体的元素;

* ```element.sendKeys('something')```语句可以向文本框中输入具体的内容;

* ```Key.RETURN```代表回车键，这些具体的键值通常与sendKeys配合使用;




原始封面

![课程图片](https://images.unsplash.com/photo-1493979969019-a78fdb263931?w=300)


