Обработка пользовательского интерфейса Selenium Calender - PullRequest
0 голосов
/ 06 мая 2020

Я изучаю концепцию обработки пользовательского интерфейса календаря в селене, но застрял Код 1:

import java.util.concurrent.TimeUnit;

enter code here

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

public class CalenderUI {

    public static void main(String[] args) {

        System.setProperty("webdriver.chrome.driver","C:\\Users\\sumit goyal\\Downloads\\chromedriver_latest\\chromedriver.exe");

        WebDriver driver = new ChromeDriver();
        driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
        driver.manage().window().maximize();
        driver.get("http://www.airindia.in/");
        driver.findElement(By.cssSelector("li.bookFlight")).click(); //CALENDER Resides inside it

        driver.findElement(By.xpath("//input[@title='Departing']")).click(); // will open calendar POPUPmenu

        WebElement cal = driver.findElement(By.xpath("//div[@id='ui-datepicker-div']/div[2]")); //restricting scope

        while(!(driver.findElement(By.cssSelector("div[class='ui-datepicker-title'] span:nth-child(2)")).getText().equals("2021")))

        {
            cal.findElement(By.cssSelector("a[data-handler='next']")).click(); //will click on next button until 2021 arrives

        }

    }

}

после запуска кода я получил эту ошибку: ссылка на устаревший элемент: элемент не прикреплен к странице документ

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

1 Ответ

1 голос
/ 06 мая 2020

Это может произойти, если операция DOM, происходящая на странице, временно делает элемент недоступным. Чтобы учесть эти случаи, вам нужно попытаться снова переместить элемент внутри l oop.

Заменить приведенный ниже код:

driver.findElement(By.xpath("//input[@title='Departing']")).click(); // will open calendar POPUPmenu
while (!(driver.findElement(By.cssSelector("div[class='ui-datepicker-title'] span:nth-child(2)")).getText().equals("2021"))) {
    WebElement cal = driver.findElement(By.xpath("//div[@id='ui-datepicker-div']/div[2]")); //restricting scope
    cal.findElement(By.cssSelector("a[data-handler='next']")).click(); //will click on next button until 2021 arrives
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...