2016-01-22 4 views
-1

Я Автоматизирую процесс добавления в карточку "http://www.fnp.com/the-sweet-surprises-genpr-143431-e.html" сайт. Я пишу код Использование TestNG POM Структура. Я застрял в задаче, где я получаю Исключение NullPointer в разделе «Управление автозапуском». Ниже мой POM КлассПолучение исключения NullPointer при обработке AutoSuggestion в Selenium Java

public class productPage_POM { 
    public WebDriver driver; 

    @FindBy(id="tagsf2") 
    private WebElement city_txtbox; 

public productPage_POM(WebDriver driver) 
    { 
     PageFactory.initElements(driver, this); 
    } 

    public void sel_adr() 
    { 
     city_txtbox.sendKeys("gan");  // on this line i am gettign nullpointer Exception 

     String xp = "//a[starts-with(text(),'gan')]"; 
     List<WebElement> allList = driver.findElements(By.xpath(xp)); 
     int count = allList.size(); 
     System.out.println(count); 
     for (int i = 0; i < count ; i++) 
     { 
      String name = allList.get(i).getText(); 
      System.out.println(name); 
      if(name.contains("Gandhinagar")) 
      { 
       allList.get(i).click(); 
       break; 
      } 
     } 

Ниже HTML структура

<div class="pro_detail"> 
<div id="changeImage" class="pro_detail_image"> 
<div class="pro_detail_title"> 
<div class="pro_detail_size"> 
<div class="pro_detail_form"> 
<input id="cityIdHidden" type="hidden" value="CITY-1219"> 
<input id="hasShippingOption" type="hidden" value=""> 
<input id="cityIdHidden1" type="hidden" value=""> 
<input id="liCount" type="hidden" value="1"> 
<div id="hiddenField"> 
<div class="pro_detail_form_inn"> 
<label>1. Where do you want to deliver this?</label> 
<input id="tagsf2" class="inp_pro_detail2 election ui-autocomplete-input" type="text" value="Enter City" onchange="showAddtocart();" onblur="WatermarkOnblur('Enter City','tagsf2');shippingOption();" onfocus="WatermarkOnfocus('Enter City','tagsf2')" autocomplete="off"> 
<span class="ui-helper-hidden-accessible" role="status" aria-live="polite">CITY-1219</span> 
<div class="clear"></div> 
<div id="cityNotAvailable" class="error_message hide" style="display: none;"> 
</div> 
<div class="textbox"> 
</div> 
<div class="pro_detail_form"> 
<div id="divDeliveryText" class="pro_detail_form" style="display:none;"> 
<div id="valentineCatalougueText" class="pro_detail_form" style="display:block;"> 
<div class="pro_detail_form"> 
+0

Сообщите об ошибке –

+0

Убедитесь, что ваш локатор 'city_txtbox' инициализирован, в коде я не могу найти его xpath. –

ответ

1

Ниже код будет работать:

String xp = "//ul/li/a[@class='ui-corner-all']"; 
    List<WebElement> allList = driver.findElements(By.xpath(xp)); 
    int count = allList.size(); 
    System.out.println(count); 
    for (int i = 0; i < count ; i++) 
    { 
     String name = allList.get(i).getText(); 
     System.out.println(name); 
     if(name.contains("Gandhinagar")) 
     { 
      allList.get(i).click(); 
      break; 
     } 

} 
+0

спасибо anita. это работает нормально –

+0

упоминание не @RahilKumar :) – Anitha

+0

можно посмотреть еще одну часть. просто нажмите на ссылку [ссылка] (http://stackoverflow.com/questions/34945125/unable-to-select-from-ui-li-elements-in-selenium-java?noredirect1_comment57622022_34945125) –

0

Я думаю, что автозаполнение создает список. Так оно и должно быть

String xp = "//li[starts-with(text(),'gan')]"; 
WebDriverWait wait = new WebDriverWait(driver,40); 
wait.until(ExpectedConditions.presenceOfElementsLocated(By.xpath(xp))); 

Я думаю, что это занимает много времени для автозаполнения для загрузки, но должна быть некоторой задержкой, после чего вы должны попытаться найти элементы. Попробуйте WebDriverWait и дайте мне знать.

+0

это не сработало. Я также пробовал с тегом Div –

+0

попробуйте использовать Подождите, как указано выше. –

0

инициализировать WebElement до щелчка или SendKeys.

WebElement webelement = getDriver().findElement(By.id("tagsf2")); 
webelement.sendKeys("gan"); 

Оставшаяся логика кажется правильной. Просто убедитесь, что xpath правильного поля вашего запроса.

Смежные вопросы