selenium webdriver中同一类的两个元素

时间:2015-02-19 07:38:01

标签: selenium-webdriver

我正在使用“Java”语言处理selenium web驱动程序,并希望访问相同classname的两个元素。实际上,这两个元素都是错误消息,它们是以具有相同类的小弹出方式出现的。但问题是每次它只选择即将到来的第一个元素。请建议我应该使用哪种方法来获取这两个元素。

另外,我需要将这两个消息与我添加的字符串进行比较。这是我尝试过的代码:

public class mysignup {
public static WebDriver d;
    public static void main(String []args)throws Exception{
        d = new FirefoxDriver();
        d.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);

        d.findElement(By.name("firstname")).sendKeys("qwertyuiokjhgfdsazxcvbnmkloiuytr");
        d.findElement(By.name("firstname")).click();
        d.findElement(By.name("lastname")).sendKeys("singh");
        d.findElement(By.name("email_id")).sendKeys("abcgmail.com");
        d.findElement(By.name("firstname")).click();
        d.findElement(By.name("email_id")).click();

       String bodyText = d.findElement(By.cssSelector(".popover-content")).getText();

2 个答案:

答案 0 :(得分:0)

当findElement返回一个WebElement时,findElements将返回符合给定条件的所有元素。

答案 1 :(得分:0)

在这种情况下,我建议使用findElements方法。如果找到,它将返回所有元素的列表或空列表。所以你可以试试:

List<WebElement> lstEle = d.findElements(By.cssSelector(".popover-content"));
List<String> strLst = new ArrayList<String>();// list to contain all texts in each element
lst.forEach(new Consumer<WebElement>() { // foreach element add text to strLst
    @Override
    public void accept(WebElement t) {
        strLst.add(t.getText());
    }
});