2017-07-31 65 views
0

我有以下使用其正常工作,並在控制檯返回預期的HTML硒和鉻司機節點路徑:在節點中使用硒與Phantomjs沒有返回結果

app.get('/google', function (req, res) { 
     var driver = new webdriver 
     .Builder() 
     .forBrowser('chrome') 
     .build(); 

     driver.get('https://www.google.com') 
     driver 
     .manage() 
     .window() 
     .setSize(1200, 1024); 
     driver.wait(webdriver.until.elementLocated({xpath: '//*[@id="lst-ib"]'})); 
     return driver 
     .findElement({xpath: '//*[@id="lst-ib"]'}) 
     .sendKeys('stackoverflow' + webdriver.Key.RETURN) 
     .then((html) => { 
      return driver 
      .findElement({xpath: '//*[@id="rso"]/div[1]/div/div/div/div'}) 
      .getAttribute("innerHTML") 
     }) 
     .then((result) => { 
      console.log(result) 
     }) 
.then(() => { 
     res 
     .status(200) 
     .send('ok') 
    }); 

我也安裝了幻影JS司機並通過返回URL標題測試其工作 - 它的工作原理。當我使用上面的確切路線並用phantomjs替換chrome時,我沒有返回任何結果。沒有錯誤 - 只是在我的控制檯中沒有打印出來。狀態和結果永遠不會發送到瀏覽器,因此它似乎沒有跨越承諾鏈。

有什麼建議嗎?

回答

0

問題是根據用戶代理呈現不同的html。通過強制用戶代理,我能夠檢索我需要的結果。 這是上面替換的代碼片段,以獲得此工作。

.Builder() 
// .forBrowser('phantomjs') 
.withCapabilities(webdriver.Capabilities.phantomjs() 
.set("phantomjs.page.settings.userAgent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36")) 
.build();