Selenium IDE,使用相同的类选择多个文本

时间:2015-01-11 01:37:19

标签: selenium-ide

我有一个页面,其中包含大量使用相同类的文本。我想要选择和存储同一个类的所有文本。这可能吗?所有建议&评论赞赏!

我有这样的HTML代码:

<p class="foo">Some sample text</p>
<p class="foo">Some more sample text</p>

我试过这个:

<tr>
<td>storeText</td>
<td>//p[@class=foo']</td>
<td>var1</td>
</tr>

我期望var1为:

Some sample text
Some more sample text

或者,我是否需要设置while语句并单独收集?

此页面讨论了类似的练习,但使用Selenium for Python:Get the text from multiple elements with the same class in Selenium for Python?

3 个答案:

答案 0 :(得分:0)

//gather all p[class=foo]
List<WebElement> ele = driver.findElements(By.cssSelector("p.foo"));

Iterator<WebElement> iter = ele.iterator();

// initialize array, map, whatever

While(iter.hasNext()) {
    // insert text into map
    // print to log
   // store in array
   //whatever you need
   var.add( iter.next().text() );
}

答案 1 :(得分:0)

我没有尝试@bcar的答案,因为我不是一个javascript专家,我也不确定我能把答案放到IDE中。然而我找到了另一种方式。我发现文本存储在表中,所以我使用以下代码来提取整个表(包括我需要的文本)。

<tr>
    <td>storeText</td>
    <td>//div/h2[text()=&quot;Elements and Performance Criteria&quot;]/following::table</td>
    <td>Content</td>
</tr>

现在我必须弄清楚如何用新文本替换新行,因为这是纯文本。 stackoverflow的另一个问题!感谢。

答案 2 :(得分:0)

很简单: 只需遍历存储的元素。 每当您使用 find_elements_by_class_name 时,它都会返回 selenium 网络元素列表。因此,您只需要像这样循环迭代即可。

names = driver.find_elements_by_class_name("_xEcR")
for i in names:
    print(i.text)