Элемент невидимое исключение? В динамическом выпадающем автосуггестиве - Selenium - Java - PullRequest
0 голосов
/ 09 апреля 2019

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

Сайт: https://www.zoopla.co.uk/

Это страница, которую я пытаюсь обработать. enter image description here

При нажатии выдает элемент не видимое исключение Есть ли другой способ, с помощью которого можно автоматически обрабатывать выпадающие подсказки?

Я использую цикл for, чтобы получить параметры из списка и попытаться сравнить их с текстами из списка и выбрать его в соответствии с истинным условием

Homepage.java

//selecting region
public void selectRegion(String regionName) throws InterruptedException {

    int regionCount = getOptions().size();
    System.out.println("count of region" + regionCount);

    for(int i=0;i<getOptions().size();i++) {

        String region = getOptions().get(i).getText();
        System.out.println(regionName);

        if(regionName.equals(regionName)) {
            try {
            getOptions().get(i).click();
            break;
            }
            catch (Exception e) {
                System.out.println("exception >>" + e.toString()) ;             }
        }
    }
}


@Test
public void homePage() throws InterruptedException {


    HomePage homePage = PageFactory.initElements(driver, HomePage.class);
    homePage.EnterSearch("lond");

    Thread.sleep(1000);
    homePage.selectRegion("London");

    homePage.clickSearchBtn();

Опция Desired выбирается, но в консоли выдает повторяющийся элемент, а не видимое исключение

> исключение >> org.openqa.selenium.ElementNotVisibleException: элемент не взаимодействует (Информация о сеансе: хром = 73.0.3683.86) (Информация о драйвере: chromedriver = 73.0.3683.75, платформа = Linux 4.15.0-47-generic x86_64) (ПРЕДУПРЕЖДЕНИЕ: сервер не предоставил никакой информации о трассировке стека) Продолжительность команды или время ожидания: 0 миллисекунд Информация о сборке: версия: '3.141.59', редакция: 'e82be7d358', время: '2018-118

Ответы [ 2 ]

1 голос
/ 09 апреля 2019

См. Ниже код:

HomePage

Инициализация webelements:

@FindBy(css = "ul.ui-autocomplete>li>a")
List<WebElement> regions;

Способ выбора региона:

public void selectRegion(String param) {
    for (WebElement e : regions) {
        if (e.getText().equals(param)) {
            e.click();
            break;
        }
    }
}

А это твой вызывающий класс

driver.get("https://www.zoopla.co.uk/");
driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);
HomePage page = new HomePage(driver);
page.enterSearch("lond");
page.selectRegion("London");
page.clickSearchBtn();

Код работает на моем конце в браузере Chrome, дайте мне знать, если у вас есть какие-либо проблемы в этом

1 голос
/ 09 апреля 2019
public void searchUsingAutoComplete(String element,String reuiredTextToClick) {
    WebDriverWait wait = new WebDriverWait(d,30);
    wait.until(ExpectedConditions.visibilityOfAllElementsLocatedBy(By.xpath(element)));

    List<WebElement> list=d.findElements(By.xpath(element));
log.info("Auto Suggest List ::" + list.size());
    int i;
    for( i = 0 ;i< list.size();i++)
    {
        log.info(list.get(i).getText());

        if(reuiredTextToClick.equalsIgnoreCase(list.get(i).getText()))
        {
            list.get(i).click();
            break;
        }else {
            log.info(list.get(i).getText()+" not equals "+reuiredTextToClick);
        }
        if(i==list.size()-1) {log.error(reuiredTextToClick+"  not found");
        throw new ElementNotVisibleException("Element not found with "+ reuiredTextToClick+" text"); 

        }
                }

Используйте код выше, ваш элемент будет: - // ul [@ id = 'ui-id-1'] // li, я пытался с этим кодом, я могу выбрать нужный текст

...