2015-09-22 18:35:28 +02:00
|
|
|
selenium
|
|
|
|
========
|
|
|
|
|
|
|
|
[Selenium][1] is an umbrella project for a range of tools and libraries that enable
|
|
|
|
and support the automation of web browsers.
|
|
|
|
|
2016-02-04 04:12:14 +02:00
|
|
|
Watch [this][2] video to get started.
|
|
|
|
|
2015-09-22 18:35:28 +02:00
|
|
|
## Server
|
|
|
|
|
2016-02-04 04:12:14 +02:00
|
|
|
```bash
|
2015-09-22 18:35:28 +02:00
|
|
|
$ docker-compose up -d
|
2022-01-11 11:33:20 +02:00
|
|
|
$ curl http://127.0.0.1:4444/
|
2015-09-22 18:35:28 +02:00
|
|
|
```
|
|
|
|
|
2015-09-23 05:32:47 +02:00
|
|
|
> Another way to start selenium server:
|
|
|
|
|
2016-11-23 09:51:17 +02:00
|
|
|
```bash
|
2015-09-23 05:32:47 +02:00
|
|
|
$ npm install -g selenium-standalone
|
|
|
|
$ selenium-standalone install
|
|
|
|
$ selenium-standalone start
|
|
|
|
```
|
|
|
|
|
2015-09-22 18:35:28 +02:00
|
|
|
## Client
|
|
|
|
|
2015-09-23 05:32:47 +02:00
|
|
|
baidu-search.py
|
2015-09-22 18:35:28 +02:00
|
|
|
|
2016-11-23 09:51:17 +02:00
|
|
|
```python
|
2015-09-22 18:35:28 +02:00
|
|
|
from selenium import webdriver
|
|
|
|
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
|
2019-05-10 12:04:28 +02:00
|
|
|
from selenium.webdriver.common.proxy import Proxy, ProxyType
|
|
|
|
from selenium.webdriver.common.by import By
|
|
|
|
from selenium.webdriver.support.ui import WebDriverWait
|
|
|
|
from selenium.webdriver.support import expected_conditions as EC
|
|
|
|
|
|
|
|
proxy = Proxy({
|
|
|
|
'proxyType': 'MANUAL',
|
|
|
|
'httpProxy': '1.2.3.4:8080',
|
|
|
|
'sslProxy': '1.2.3.4:8080',
|
|
|
|
})
|
|
|
|
|
|
|
|
capabilities = DesiredCapabilities.CHROME
|
|
|
|
proxy.add_to_capabilities(capabilities)
|
2015-09-22 18:35:28 +02:00
|
|
|
|
|
|
|
driver = webdriver.Remote(
|
|
|
|
command_executor='http://127.0.0.1:4444/wd/hub',
|
2019-05-10 12:04:28 +02:00
|
|
|
desired_capabilities=capabilities
|
2015-09-22 18:35:28 +02:00
|
|
|
)
|
|
|
|
|
2015-09-23 05:32:47 +02:00
|
|
|
driver.get('http://www.baidu.com/')
|
2019-05-10 12:04:28 +02:00
|
|
|
driver.find_element_by_id('kw').send_keys('ip')
|
2015-09-23 05:32:47 +02:00
|
|
|
driver.find_element_by_id('su').click()
|
2019-05-10 12:04:28 +02:00
|
|
|
|
|
|
|
WebDriverWait(driver, 10).until(
|
|
|
|
EC.presence_of_element_located((By.CLASS_NAME, 'nums_text'))
|
|
|
|
)
|
|
|
|
|
2015-09-23 05:32:47 +02:00
|
|
|
driver.save_screenshot('baidu.png')
|
|
|
|
driver.close()
|
2015-09-22 18:35:28 +02:00
|
|
|
```
|
|
|
|
|
2015-09-23 05:32:47 +02:00
|
|
|
search-baidu.js
|
|
|
|
|
2016-11-23 09:51:17 +02:00
|
|
|
```javascript
|
2015-09-23 05:32:47 +02:00
|
|
|
var webdriver = require('selenium-webdriver'),
|
|
|
|
By = require('selenium-webdriver').By,
|
|
|
|
until = require('selenium-webdriver').until,
|
|
|
|
fs = require('fs');
|
|
|
|
|
|
|
|
webdriver.WebDriver.prototype.saveScreenshot = function(filename) {
|
|
|
|
return driver.takeScreenshot().then(function(data) {
|
|
|
|
fs.writeFile(filename, data.replace(/^data:image\/png;base64,/,''), 'base64', function(err) {
|
|
|
|
if(err) throw err;
|
|
|
|
});
|
|
|
|
})
|
|
|
|
};
|
|
|
|
|
|
|
|
var driver = new webdriver.Builder()
|
|
|
|
.forBrowser('firefox')
|
|
|
|
.usingServer('http://127.0.0.1:4444/wd/hub')
|
|
|
|
.build();
|
|
|
|
|
|
|
|
driver.get('http://www.baidu.com/');
|
|
|
|
driver.findElement(By.id('kw')).sendKeys('webdriver');
|
|
|
|
driver.findElement(By.id('su')).click();
|
|
|
|
driver.wait(until.titleIs('webdriver_百度搜索'), 1000);
|
|
|
|
driver.saveScreenshot('baidu.png');
|
|
|
|
driver.quit();
|
|
|
|
```
|
|
|
|
|
2016-11-23 09:51:17 +02:00
|
|
|
```bash
|
2016-02-04 04:12:14 +02:00
|
|
|
# VNC
|
2022-01-11 11:33:20 +02:00
|
|
|
$ open vnc://127.0.0.1:5900
|
2021-10-14 12:41:53 +02:00
|
|
|
$ open http://127.0.0.1:7900
|
2016-02-04 04:12:14 +02:00
|
|
|
|
2015-09-23 05:32:47 +02:00
|
|
|
# PYTHON
|
2015-09-22 18:35:28 +02:00
|
|
|
$ pip3 install selenium
|
2015-09-23 05:32:47 +02:00
|
|
|
$ python3 baidu-search.py
|
|
|
|
|
|
|
|
# NODEJS
|
|
|
|
$ npm install -g selenium-webdriver
|
|
|
|
$ node search-baidu.js
|
2015-09-22 18:35:28 +02:00
|
|
|
```
|
|
|
|
|
|
|
|
[1]: http://seleniumhq.org/
|
2016-02-04 04:12:14 +02:00
|
|
|
[2]: https://www.youtube.com/watch?v=S4OkrnFb-YY
|