2015-02-19 3 views
0

Я работаю над веб-драйвером селена с использованием языка «Java» и хочу получить доступ к двум элементам одинакового classname. На самом деле оба элемента являются сообщениями об ошибках, которые появляются в небольшом всплывающем окне, имеющем тот же класс. Но проблема в том, что каждый раз он выбирает только первый элемент входящего класса. Укажите, какой метод я должен использовать для получения обоих элементов.два элемента одного класса в selenium webdriver

Кроме того, мне нужно сравнить оба сообщения со строкой, которую я добавил. Вот код, который я пробовал:

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

Пожалуйста, используйте Xpath ИЛИ cssselector, если элементы имеют одинаковый класс. –

+2

Предоставляя соответствующий HTML-код, мы помогаем u bettr! –

ответ

0

Хотя findElement возвращает вам один WebElement, findElements возвращает все элементы, которые соответствуют заданным условиям.

+0

Привет всем, Спасибо за ваши ценные комментарии. Я пробовал ниже, и он также работал :) :) d.findElements (By.className ("popover-content")). Get (0) .getText(). Он дал мне текст из значения индекса. –

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()); 
    } 
}); 
Смежные вопросы