NodeJS Selenium使用从findElements返回的WebElements

时间:2016-06-30 14:00:42

标签: python node.js selenium

我是Node.js的新手,目前我正在尝试将一些Python代码重新编写到其中。

我在Python中有以下代码段,其中driver是我的webdriver实例。

tabs = driver.find_elements_by_xpath('//div[@class="className"]') 
for tab in tabs:      
    print(tab.find_element_by_tag_name('span').text)

My Node.js对此代码的解释是

tabs = driver.findElements(webdriver.By.xpath('//div[@class="className"]'));        
for ( var tab in tabs ) {           
    console.log(tab.findElement(webdriver.By.css('span')).getText());
}

但是我收到了错误

  

TypeError:tab.findElement不是函数

造成这种情况的原因是什么?

我必须承认,我觉得我稍微忽略了Node.js的关键点,但也许这个例子可能有助于我理解。

1 个答案:

答案 0 :(得分:0)

如果我深入了解findElement()的selenium源代码,我发现它可能需要opt_root作为参数。关于它的文档说:

  

@param {?{ELEMENT:string} =} opt_root的WebElement参考    *元素执行搜索。如果未指定,将使用    *目标网页的{@code document}。

所以我认为不是tab.findElement(webdriver.By.css('span')而是你必须这样做: driver.findElement(webdriver.By.css, 'span', tab)

注意:我并不确切知道node.js的工作原理。我刚刚浏览了源代码,所以我不确定它是否可行。