2017-07-31 4 views
0

私が正しく動作し、コンソールに予想されるHTMLを返しているセレンやクロムドライバを使用して、次のノードのルートを持ってを返さない:は、ノードに結果

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に置き換えると、返される結果は得られません。エラーはありません。私のコンソールには表示されません。ステータスと結果はブラウザに送信されることはありませんので、プロミスチェーンを踏んでいるようには見えません。

提案がありますか?

答えて

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();