2016-03-01 2 views
0

По какой-то причине Selenium больше не находит элемент, я получаю java.lang.NullPointerException. Я получаю локатор в классе через xpath. Когда я ищу xpath в html, я получаю только один результат, поэтому он должен быть основан.Selenium не находит элемент

Это HTML, где элемент:

<input type="text" class="form-control app-header-page-search-field ng-pristine ng-untouched ng-valid" placeholder="Nome do produto, marca ou sku:123" ng-model="vm.search" ng-model-options="{ debounce: 200 }" uib-typeahead="ngram for ngramResults in vm.getAutocompleteItems($viewValue)" 
 
typeahead-template-url="/app/_template/typeahead-match.template.html" typeahead-popup-template-url="/app/_template/typeahead-popup.template.html" ng-enter="" typeahead-on-select="vm.autocompleteSelect($item)" typeahead-no-results="noResults" aria-autocomplete="list" 
 
aria-expanded="false" aria-owns="typeahead-36-8683">

Это метод из класса страницы:

@FindBy(xpath = "//span[text() = 'Produtos']") 
@CacheLookup 
private WebElement produtos; 

public Produtos clickProdutos(){ 
     wait.until(ExpectedConditions.visibilityOf(produtos)); 
     produtos.click(); 
     return new Produtos(driver, wait); 
} 

И это, как я называю этот метод в моем методе @Test.

@Test 
public void runTestCheckProdutos(){ 

    Home home = new Home(driver, wait); 
    home.clickProdutos(); 
+0

Где вы получаете NPE? На какой строке точно? Является ли переменная 'produtos' объявленной в любом месте? Я не вижу объявления в вашем коде. – krokodilko

+0

Я думал, что вы ищете элемент busca, но нажав кнопку productos. wait.until (Ожидаемое условие .видимостьОф (автобуса)); busca.click(); –

+0

Мой плохой, я написал неверный FindBy хе-хе. Отредактировано с правильным (produtos) –

ответ

0

Я думаю, вы нажимаете на неправильный объект. (Майские продукты могут даже не инициализироваться)

wait.until(ExpectedConditions.visibilityOf(busca)); 
busca.click(); 
Смежные вопросы