2017-07-26 49 views
0

我想循環一些表並獲得innerHTML(),但是當我嘗試這樣做時,我得到的innerHTML不是一個函數。 我看過的文件過來,findElements應該返回一個數組,但如果我檢查的項目類型是一個對象Selenium WebDrive findElements返回對象

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

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

    driver.get('https://stackoverflow.com/'); 

    driver.findElements(By.xpath('//*[@id="question-mini-list"]/div')) 
    .then(function(item) { 
     console.log(item); 
    }); 
+0

我想你的問題是你如何讓所有的元素? btw請提供html也可以(或者只是一個小例子) – Edwin

+0

您需要實際指定您希望文本使用該方法.getText() – redp

+0

在Java中,'findElements'返回一個WebElements列表。在這裏接收不同的東西很奇怪。你可以嘗試使用cssSelector'By.cssselector('#question-mini-lust> div''?只是爲了檢查它是否會改變結果... – Tom

回答

2

從他們GitHubfindElements返回Array,其中包含Elements(對象!)。

findElements: function(scope) { 
    var element; 

    if (element = $(this.params.id)) 
    if (this.match(element)) 
     if (!scope || Element.childOf(element, scope)) 
     return [element]; 

    scope = (scope || document).getElementsByTagName(this.params.tagName || '*'); 

    var results = []; 
    for (var i = 0; i < scope.length; i++) 
    if (this.match(element = scope[i])) 
     results.push(Element.extend(element)); 

    return results; 
} 

要獲得的innerHTML,您可以使用getAttribute功能的元件上:

item[0].getAttribute('innerHTML'); 
+0

是的,謝謝你的作品 –