2017-03-25 46 views
0

我想要廢棄一個網站,所以我使用硒-webdriver。 我選擇了javascript和nodejs作爲語言來教我自己。 以下是瞭解該工具行爲的非常基本的代碼。硒web驅動程序如何在JavaScript中工作?

我用下面的命令行啓動它: 節點--debug-BRK = 5858的src/app.js

var chromedriver = require('chromedriver'); 

var webdriver = require('selenium-webdriver'), 
     By = webdriver.By, 
     until = webdriver.until; 

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

    driver.get('http://www.google.com/ncr'); 
    debugger; 
    driver.findElement(By.name('q')).sendKeys('webdriver'); 
    driver.findElement(By.name('btnG')).click(); 
    driver.wait(until.titleIs('webdriver - Google Search'), 1000); 
    driver.quit(); 

我使用vscode作爲IDE。 當我按下F5時,在代碼中設置斷點後,斷點被擊中,但是沒有瀏覽器打開。我點擊簡歷(在VScode中),腳本結束,然後只有瀏覽器啓動並執行相應的命令,我的斷點現在已被忽略,因爲它已被命中。

這有以下後果:我不能一步一步地運行selenium webdriver,因此無法使用xpath命令評估find元素的內容。

我很想念但是看不到。 我是否必須添加Sleep語句?

我見過大多數人使用java,但我寧願堅持javascript如果可能的話。

回答

0

我在程序中可以看到幾個問題。

  1. 當使用JavaScript編寫的webdriver,一個重要的概念是,所有的函數調用是異步的,並返回一個ThenablePromise。所以你不能像順序編程那樣一行一行地寫。

    你需要這樣的工作方式:

    driver.findElement(By.name('q')).sendKeys('webdriver') 
        .then(function(){ 
         driver.findElement(By.name('btnG')).click(); 
         ... 
        }); 
    

    見的webdriver的JavaScript API文檔在這裏: https://seleniumhq.github.io/selenium/docs/api/javascript/module/selenium-webdriver/index.html

  2. 在調試方面,如果你在瀏覽器的開發者工具暫停和跟蹤有什麼你跟蹤的是你試圖抓取的網站程序,但不是你的webdriver程序。我使用WebStorm來跟蹤我的webdriver程序。

+0

我知道硒可與承諾,但如下所述:https://github.com/SeleniumHQ/selenium/wiki/WebDriverJs,你並不需要「於是」了。我現在使用vsocde,無法調試webdriver程序。目前,我做節點--debug-brk,但這不能讓我調試。 – Charly

相關問題