2014-07-20 94 views
1

我想通過我的頁面上的所有元素穿越:的Node.js +硒如何解析HTML正確

enter image description here

元素的路徑爲DIV [ID = '功能列表'] /表/ tbody的/ TR /日

我的腳本是:

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

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

driver.get('http://www.gsmarena.com'); 
driver.findElement(webdriver.By.name('sName')).sendKeys('iphone 4s'); 
driver.findElement(webdriver.By.id('quick-search-button')).click(); 


driver.findElement(webdriver.By.xpath("//div[@id='specs-list']/table/tbody/tr/th")).then(function(elem){ 
    console.log(elem.getText()); 
}); 

,但我得到:

[email protected]:~/www$ node first_test.js 
{ then: [Function: then], 
    cancel: [Function: cancel], 
    isPending: [Function: isPending] } 

不是文本General 的問題是:
1.我怎樣才能得到正確的文本字符串?
2.如何遍歷許多元素?

回答

5

1 - 如何獲取正確的文本字符串?

driver.findElement(webdriver.By.xpath("//div[@id='specs-list']/table/tbody/tr/th")).getText().then(function(textValue){ 
    console.log(textValue); 
}); 

或者

driver.findElement(webdriver.By.xpath("//div[@id='specs-list']/table/tbody/tr/th")).then(function(elem){ 
    elem.getText().then(function(textValue) { 
     console.log(textValue); 
    }); 
}); 

爲什麼?

findElement和getText()都會返回您的承諾。如果您嘗試console.log(driver.findElement(....)),您會得到類似的結果

2 - 如何遍歷許多th元素?

driver.findElements(webdriver.By.xpath("//div[@id='specs-list']/table/tbody/tr/th")).then(function(elems){ 
    elems.forEach(function (elem) { 
     elem.getText().then(function(textValue){ 
      console.log(textValue); 
     }); 
    }); 
}); 
0

對不起,在這裏問我的問題。我真的需要答案。我們如何使用該函數中的textValue。我需要使用textValue與其他數據進行比較。

+0

你有答案嗎?如果您仍然需要幫助,請打開問題,提供您的代碼片段,我會盡我所能來回答您。 –