как обрабатывать автоматическое предложение в полях «от» и «пункт назначения» для этого сайта «https://www.goibibo.com/" в селене» - PullRequest
0 голосов
/ 02 апреля 2019

как обрабатывать автоматическое предложение в полях «от» и «место назначения» для этого сайта »https://www.goibibo.com/" в селене. Пожалуйста, помогите

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

Невозможно щелкнуть раскрывающийся список

   package basic;

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

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;

public class goibibo {

    public static void main(String[] args) throws InterruptedException {
        // TODO Auto-generated method stub
        WebDriver driver = new ChromeDriver();
        driver.get("https://www.goibibo.com/");

        new WebDriverWait(driver, 20)
                .until(ExpectedConditions.elementToBeClickable(By.xpath("//input[@id='gosuggest_inputSrc']")))
                .sendKeys("Mum");
        List<WebElement> myList = new WebDriverWait(driver, 20).until(
                ExpectedConditions.visibilityOfAllElementsLocatedBy(By.xpath("//*[@id=\"react-autosuggest-1\"]")));
        for (WebElement element : myList) {
            if (element.getText().contains("Mumbai"))
                ;
            element.click();
        }

    }

}

Ответы [ 3 ]

2 голосов
/ 02 апреля 2019

Браузер Chrome

Сначала узнайте, как найти XPATH поля автозаполнения в Браузере Chrome. Откройте свой веб-сайт, затем нажмите элемент «Проверка» и нажмите вкладку «Источник», щелкните, чтобы открыть окно автозаполнения, и нажмите .F8 Ключ для отладчика паузы .Затем нажмите на вкладку Element, и вы можете легко получить свой xpath.поэтому он замораживает ваш HTML.

enter image description here

Теперь нажмите «Элементы» и создайте свой собственный путь.

enter image description here

Браузер Fire Fox

Во-вторых, как найти поле xpath для автоматического заполнения в Firefox - откройте Firefox и щелкните правой кнопкой мыши и нажмите на элементы проверки на своем веб-сайте.есть опция анимации, поэтому она откроет все ваши DOM Expanded, как показано на рисунке ниже.поэтому, читая эту структуру dom, вы можете легко создать свой XPATH.

enter image description here

Не так, как найти элементы из поля автозаполнения.Для этого обратитесь к фрагменту кода ниже.

package com.software.testing;

import java.util.List;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;

public class Testingclass extends DriverFactory {

    private static WebDriver driver = null;

    public static void main(String[] args) throws InterruptedException {

        System.setProperty("webdriver.chrome.driver", "your driver path");
        driver = new ChromeDriver();
        driver.get("https://www.goibibo.com/");
        new WebDriverWait(driver, 20)
                .until(ExpectedConditions.elementToBeClickable(By.xpath("//input[@id='gosuggest_inputSrc']")))
                .sendKeys("A");
        Thread.sleep(1000);
        List<WebElement> myList = new WebDriverWait(driver, 20).until(ExpectedConditions.presenceOfAllElementsLocatedBy(
                By.xpath("//div[@class='dib marginL10 pad0 textOverflow width90']/div/span")));
        for (int i = 0; i < myList.size(); i++) {
            System.out.println(myList.get(i).getText());
            if (myList.get(i).getText().equals("Ahmedabad")) {
                myList.get(i).click();
                break;
            }
        }

    }
}

Не забудьте использовать break после вашего условного выражения, иначе оно вызовет исключение.

0 голосов
/ 02 апреля 2019

Используйте код ниже, это будет работать

Webelement ele=driver.findelement()

Actions ob = new Actions(driver);
ob.moveToElement(ele);
ob.click(ele);
Action action  = ob.build();
action.perform();
0 голосов
/ 02 апреля 2019

Так что вы можете попробовать одно решение, пожалуйста, найдите ниже скриншот,

enter image description here

Как вы можете видеть на скриншоте, если я наберу M в текстовом поле, тораскрывающийся список показывает относительную запись к букве «M», и если вы видите в источнике <ul>, который является динамическим, как вы видите чуть ниже <input>, поэтому вам нужно обработать это раскрытие по его локатору, то он динамический, поэтому сначала вам нужно передатьнекоторый текст в текстовом поле, и после этого вам нужно выбрать элемент из выпадающего списка, используя Select в селене, который вы используете selectByVisibleText("") или что-либо еще, или вы можете использовать List<Element>, вы можете хранить все уважаемые источники (Мумбаи, Майсури т.д.) из выпадающего списка и используйте его с умом

new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.xpath("//input[@id='gosuggest_inputSrc']))).sendKeys("M");
List<WebElement> myList = new WebDriverWait(driver, 20).until(ExpectedConditions.visibilityOfAllElementsLocatedBy(By.xpath("Xpath of the dynamic drop down")));
for (WebElement element:myList) {
         if(element.getText().contains("Mumbai"));
         element.click();
    }

Я дал вам идею, дайте мне знать, если вам нужна дополнительная помощь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...