Попытка автоматизировать веб-сайт, но не получает никакого ответа после нажатия кнопки - PullRequest
0 голосов
/ 23 апреля 2019

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

System.setProperty("webdriver.chrome.driver", "chromedriver.exe");
WebDriver driver = new ChromeDriver();
driver.manage().window().maximize();
driver.get("somewebsite.html");
driver.findElement(By.xpath("//*[@id='abc']")).sendKeys("0000");
driver.findElement(By.xpath("//*[@id='xyz']")).sendKeys("5020");
driver.manage().timeouts().implicitlyWait(30,TimeUnit.SECONDS);
driver.findElement(By.xpath("//span[contains(text(), 'Click 
Me')]")).click();
//after clicking this button website is not showing any responce and 
the program terminates successfully
WebDriverWait wait = new WebDriverWait(driver, 30);
wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//* 
[@id='pqr']")

1 Ответ

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

Лучше использовать явные ожидания вместо неявных ожиданий.Явные ожидания ждут вашего заданного условия, и когда условие выполнено, оно перестает ждать.

Поскольку вы ожидаете, что что-то будет присутствовать после щелчка, дождитесь, пока этот элемент станет видимым, используя явное ожидание.

Попробуйте это:

// declare a wait first and you could reuse it
    WebDriverWait wait = new WebDriverWait(driver, 30);

    WebElement button = driver.findElement(By.xpath("//span[contains(text(), 'Click Me')]"));

// instead of implicit wait this waits for the button to be clicable and doesn't wait more than necessary
    wait.until(ExpectedConditions.elementToBeClickable(button));
    button.click();

    WebElement expected_element = driver.findElement(By.id("pqr"));

//this waits for your expected element to be visible after click. if the element is not visible after 30 seconds it will throw timeout exception
    wait.until(ExpectedConditions.visibilityOf(expected_element));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...