WebDriver getText выдает исключения

Хорошо, я совершенно не в курсе: У меня есть таблица на странице, где каждая строка имеет идентификатор CSS, увеличенный на единицу. И я ищу идентификатор аукциона в такой таблице и сопоставляю его с аукционом, который я ввел в предыдущем тесте Selenium. Итак, мой код выглядит следующим образом:

    int i = 0;
    Boolean stillHaveSomethingToSearch = true;
    Boolean foundit = false;

    while (stillHaveSomethingToSearch){
        idConstructor = "mainForm:aucPanelId:0:listOfAuctions:"+i;

        try{
            auctionRow = driver.findElement(By.id(idConstructor));
        } catch (NoSuchElementException e){
            stillHaveSomethingToSearch = false;
        }
        if (stillHaveSomethingToSearch) {
           foundAuctionID = auctionRow.getText();
            System.out.println("foundAuctionID = " + foundAuctionID);
           if (auctionID.equals(foundAuctionID)){
               stillHaveSomethingToSearch = false;
               foundit = true;
           }
        }
        i++;
    }
    if (foundit){
        auctionRow.click();
     }

Где «id аукциона» передается методу предыдущим тестом.

uctionRow - это Webelement, представленный двумя промежутками, в которых хранится фактический идентификатор аукциона

  <span id="mainForm:aucPanelId:0:listOfAuctions:0">116</span>

Целая строка доступна для кликов, поэтому после того, как я отправлю команду click () , откроется мой найденный аукцион

What странно: аукционRow.getText (); выдает ошибку.

Если я изменю его на функцию getTagName () , она вернет мне "промежуток"

Как мне заставить его предоставить мне текст между двумя промежутками?

Stak Trace:

    org.openqa.selenium.WebDriverException:  (WARNING: The server did not provide any stacktrace information)
    Build info: version: '2.0rc3', revision: 'unknown', time: '2011-06-21 23:22:02'
    System info: os.name: 'Windows XP', os.arch: 'x86', os.version: '5.1', java.version: '1.6.0_20'
    Driver info: driver.version: RemoteWebDriver
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
        at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
        at org.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler.java:131)
        at org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:105)
        at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:402)
        at org.openqa.selenium.remote.RemoteWebElement.execute(RemoteWebElement.java:213)
        at org.openqa.selenium.remote.RemoteWebElement.getText(RemoteWebElement.java:117)
        at com.deutscheboerse.testing.AuctionsPage.showAuctionID(AuctionsPage.java:63)

РЕШЕНИЕ Хорошо, я нашел приятный и простой (и более короткий код) обходной путь. Поскольку я знаю, что идентификатор аукциона находится в элементе span, и я знаю, каким должен быть идентификатор, теперь я ищу по Xpath:

public AuctionTab showAuctionID(String auctionID){
    try{
     auctionRow = getRegulationUI().getDriver().findElement(By.xpath("//span[text()='"+auctionID+"']"));
    }catch (NoSuchElementException e){
        throw new NotFoundException("Auction ID "+ auctionID+ "was not found on first page");
    }
    auctionRow.click();
    return new AuctionTab(this);
    }
8
задан Pavel Janicek 11 January 2012 в 15:11
поделиться