Перейти к содержимому

Фотография

PageFactory + List<WebElement>


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 2

#1 astafev

astafev

    Новый участник

  • Members
  • Pip
  • 42 сообщений
  • ФИО:Евгений

Отправлено 25 июня 2012 - 05:12

Вот такой код не работает:
@FindBy(css = "header a")
List<WebElement> menuLinks;
Такой работает:
List<WebElement> menuLinks = NormalUserPage.this.driver.findElements(By.cssSelector("header a"));

у них на странице в вики написано, что вроде как должно работать, ничего особенного про массив не написано...
  • 0

#2 astafev

astafev

    Новый участник

  • Members
  • Pip
  • 42 сообщений
  • ФИО:Евгений

Отправлено 25 июня 2012 - 06:01

Поправка: так не работает только при содании внутреннего класса. Выдает: Exception in thread "main" java.lang.RuntimeException: java.lang.InstantiationException: Test$SearchResults

Пример нерабочего кода:
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.support.FindBy;
import org.openqa.selenium.support.PageFactory;

import java.util.List;
import java.util.concurrent.TimeUnit;

public class Test {


    class SearchResults {
        @FindBy(className = "g")
        private List<WebElement> list;
    }

    public static void main(String[] args) {
        WebDriver driver = new FirefoxDriver();
        driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
        driver.navigate().to("http://google.com");

        driver.findElement(By.name("q")).sendKeys("selenium");
        driver.findElement(By.name("q")).submit();

        SearchResults searchResults = PageFactory.initElements(driver, SearchResults.class);
        System.out.println(searchResults.list.size());
        searchResults.list.get(0).findElement(By.tagName("a")).click();

    }
}

Подскажите как сделать лучше?
  • 0

#3 astafev

astafev

    Новый участник

  • Members
  • Pip
  • 42 сообщений
  • ФИО:Евгений

Отправлено 25 июня 2012 - 13:05

Понял, внутренний класс должен быть объявлен как public static...
  • 0


Количество пользователей, читающих эту тему: 1

0 пользователей, 1 гостей, 0 анонимных