Любой метод для решения самоназванного метода выпадающего с использованием ключей - PullRequest
0 голосов
/ 09 апреля 2020

lang: java

Я пытался автоматизировать автоматические выпадающие подсказки, но если я даю и текст, и ключи в одной строке, это не дает сайту возможности загружать опции , Помня об этом, я продолжил работу с методом Thread Sleep и ждал загрузки предложений, но курсор выходит из веб-элемента, а операции с клавишами не выполняются. пожалуйста, помогите мне с этим ....

import org.openqa.selenium.By;
import org.openqa.selenium.Keys;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;

public class suggestivedropdown {

    public static void main(String[] args) throws InterruptedException {
        // TODO Auto-generated method stub
        System.setProperty("webdriver.chrome.driver","C:\\Users\\teddy\\Downloads\\chromedriver.exe");
        WebDriver driver = new ChromeDriver();
        driver.get("https://www.makemytrip.com/");
    //  driver.findElement(By.xpath("//input[@id='fromCity']")).clear(); this is if it contains default option
      WebElement source=driver.findElement(By.xpath("//input[@id='fromCity']"));
      source.sendKeys("HYD");
    Thread.sleep(3000);
    source.sendKeys(Keys.ARROW_DOWN);
    source.sendKeys(Keys.ENTER);
      WebElement destination=driver.findElement(By.xpath("//input[@id='toCity']"));
       destination.sendKeys("MUM");
       Thread.sleep(3000);
       destination.sendKeys(Keys.ARROW_DOWN);
       destination.sendKeys(Keys.ENTER);

1 Ответ

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

Вы не должны использовать жестко закодированные сны в коде. Если вы столкнулись с проблемой синхронизации, воспользуйтесь функцией ожидания, чтобы избежать проблем, см. Решение ниже:

    driver.get("https://www.makemytrip.com/");
    WebDriverWait wait = new WebDriverWait(driver, 30);

    wait.until(ExpectedConditions.elementToBeClickable(By.xpath("//input[@id='fromCity']"))).sendKeys("Hyd");
    wait.until(ExpectedConditions.elementToBeClickable(By.xpath("//p[contains(text(),'Hyderabad, India')]"))).click();

    wait.until(ExpectedConditions.elementToBeClickable(By.xpath("//input[@id='toCity']"))).sendKeys("Mumbai");
    wait.until(ExpectedConditions.elementToBeClickable(By.xpath("//p[contains(text(),'Mumbai, India')]"))).click();
...