Selenium webdriver selenium webdriver中同一类的两个元素

Selenium webdriver selenium webdriver中同一类的两个元素,selenium-webdriver,Selenium Webdriver,我正在使用语言“Java”开发selenium web驱动程序,希望访问相同类名的两个元素。实际上,这两个元素都是错误消息,都是在具有相同类的小弹出窗口中出现的。但问题是,每次它只选择即将到来的类的第一个元素。请建议我应该使用哪种方法来获取这两个元素 另外,我需要将这两条消息与我添加的字符串进行比较。以下是我尝试过的代码: public class mysignup { public static WebDriver d; public static void main(String [

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

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

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();

当findElement返回单个WebElement时,将返回与给定条件匹配的所有元素。

在这种情况下,我建议使用
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());
    }
});
List lstEle=d.findElements(By.cssSelector(“.popover content”);
List strLst=new ArrayList();//列表以包含每个元素中的所有文本
lst.forEach(新使用者(){//forEach元素将文本添加到strLst
@凌驾
公共无效接受(WebElement t){
strLst.add(t.getText());
}
});

如果元素具有相同的类,请使用Xpath或cssselector。提供相应的HTML将帮助我们更好地使用!大家好,谢谢你们的宝贵意见。我在下面尝试过,它也成功了:):)d.findElements(By.className(“popover内容”)).get(0.getText()。它给了我索引值中的文本。