我正在使用“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();
答案 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());
}
});