Node + Selenium使用小結

可參考網上的步驟進行操做。例如這篇文章:https://wangheng3751.github.io/2018/01/17/selenium/javascript

 

一、安裝Node.js,去官網下載最新版本的Node.js安裝html

二、安裝seleniumjava

npm install selenium-webdriver --savenode

三、安裝瀏覽器驅動,以 chrome 爲例git

npm install chromedriver --savegithub

 

而後寫 demo 測試…web

 

中間我遇到了二個問題chrome

1)「The ChromeDriver could not be found on the current PATH」數據庫

須要將 ChromeDriver 添加到系統的環境變量 Path 中npm

例如我本機的路徑 「C:\Users\xxx\AppData\Roaming\npm\node_modules\chromedriver\lib\chromedriver」

2)瀏覽器打開時,地址欄顯示 data; 而不是預期的指定的 url

解決方案,可取先升級本身的瀏覽器。

或者更換版本,下載最新(下載連接>>)找到版本,將其替換本地路徑,更新爲最新的 exe 文件

「C:\Users\xxx\AppData\Roaming\npm\node_modules\chromedriver\lib\chromedriver」

 

一個版本一個版本更換

`12

 

最後運行 demo,好比 node index.js

// inde.js

var webdriver = require('selenium-webdriver');


var driver = new webdriver.Builder()
                .forBrowser('chrome')
                .build();

// var driver = new webdriver.Builder().
//     withCapabilities(webdriver.Capabilities.chrome()).
//     build();

// driver.get('http://www.baidu.com');
// driver.findElement(webdriver.By.id('kw')).sendKeys('webdriver', webdriver.Key.RETURN);

// https://seleniumhq.github.io/selenium/docs/api/javascript/module/selenium-webdriver/index_exports_By.html
driver.get('https://bugly.qq.com/v2/workbench/apps');
// driver.findElement({ className: 'login_btn' }).findElement({ tagName: 'a' }).click();

driver.wait(webdriver.until.titleIs("QQ賬號安全登陸")).then(() => {

    driver.sleep(5 * 1000).then(() => {
        var frameElement = webdriver.By.id('ptlogin_iframe');       

        driver.switchTo().frame(driver.findElement(frameElement)).then(() => {
            driver.findElement({ id: 'qlogin_show' }).findElement({ tagName: 'a' }).click();
        });        
    });

});

能實現自動登陸 bugly,由於 bugly 作了不少限制,直接調用它的接口是不行的,因此至關於用程序開啓一個瀏覽器進程,而後用程序控制它。

 

這個跑 web 的自動化測試仍是很方便的,好比上面示例中,打開百度,輸入關鍵字,而後回車。

 

爬蟲的話,可能有一些站點作了不少嚴格的限制,好比 referer 或者 加過密,此時用 Selenium 來自動化填寫表單,而後獲取數據並存到數據庫,仍是挺方便的。

 

更多官網的API能夠前往這裏查看,https://seleniumhq.github.io/selenium/docs/api/javascript/index.html

相關文章
相關標籤/搜索