2015-07-15 2 views
5

Здравствуйте, я пытаюсь найти несколько элементов с тем же именем класса. КлассName и структура тела элементов одинаковы, но тексты, ссылки и рисунки разные.Selenium - размещение нескольких элементов с тем же именем класса

<div class="dc-content-right clearfix"> (parent) 
    <div class="dc-item clearfix">  (child nodes) 
    <div class="dc-item clearfix"> 
    <div class="dc-item clearfix"> 

Каждый из этих дочерних элементов выглядит следующим образом:

<div class="dc-item clearfix"> 
    <div class="dc-icon"> 
    <div class="dc-info"> 
    <h2> 
     <a href="http://www.avg.com/ww-en/free-antivirus-download">AVG AntiVirusFree 2015</a> 
    </h2> 

Каждый дочерний элемент имеет другой текст в теге H2. Поэтому, когда это AVG AntiVirus Free 2015, тогда это интернет-безопасность ... и так далее. Поэтому я хочу сохранить все элементы в списке, а затем работать с ними. Сначала я сохранить эти элементы intto список WebElements:

List <"WebElement"> list = driver.findElements(By.xpath("//div[@class='dc-item clearfix']")); 

Затем я хочу итерацию по списку и написать текст h2 для каждого элемента на экране:

for(WebElement i:superDiv) 
      { 
       System.out.println(i.findElement(By.xpath("//h2/a")).getText()); 
      } 

Так что исход должен быть список из трех разных заголовков, извлеченных из divs. Задача : результатом является список из 3 заголовков, которые являются теми же!

AVG AntiVirus Free 2015 
AVG AntiVirus Free 2015 
AVG AntiVirus Free 2015 

Похоже, что я нашел один и тот же элемент 3 раза. Кто-нибудь есть идея, что может быть проблемой? Спасибо

ответ

4
List<WebElement> list = driver.findElements(By.xpath(".//*[@class='dc-item clearfix']//h2/a")); 
    for(WebElement el : list) { 
     System.out.println(el.getText()); 
    } 
+0

Спасибо, что будет писать весь текст можно найти в дочернем элементе (ссылки, описание, заголовок ...) Я бы как получить доступ только к тегу h2. – Zawe

+0

ya, я неправильно понял вопрос. Я обновил xpath, так как работает новый? – Cathal

+0

Да, это действительно работает. Спасибо. Но все дело в том, возможно ли сначала сохранить весь дочерний элемент. Список <"WebElement"> list = driver.findElements (By.xpath ("// div [@ class = 'dc-item clearfix']")); , а затем вводит различные части. Что-то вроде list.get (1) .findElement (By.xpath ("// h2/a")). GetText(). Вы знаете, что что-то подобное возможно? – Zawe

1

Вы также можете попробовать: -

List<WebElement> list = driver.findElements(By.xpath(".//*[@class='dc-info']//a")); 
    for(WebElement element : list) { 
     System.out.println(element.getText()); 
    } 
Смежные вопросы