Невозможно нажать только несколько ссылок на сайте, а остальные - кликабельны с помощью Selenium. - PullRequest
0 голосов
/ 21 февраля 2020

Я пытаюсь отобразить все ссылки с веб-сайта google.com, и после отображения ссылок я пытаюсь нажать на каждую ссылку на сайте. Мой код нажимает на все ссылки, кроме


1) Реклама 2) Бизнес 3) Как работает поиск


Пожалуйста, сообщите, как нажимаются другие ссылки на сайте, кроме выше.

Мой код ->

    driver.get("https://www.google.com");

    driver.findElement(By.xpath("//*[@id=\"viewport\"]/div[3]/div/div/a[2]")).click();

    Thread.sleep(5000);

    List<WebElement> links = driver.findElements(By.tagName("a"));

    System.out.println("Total links on the site :"+links.size());

    for(int i=0;i<links.size();i++)
    {
        String linksname=links.get(i).getText();
        if(!linksname.isEmpty())
        {
            System.out.println(linksname);
            //Thread.sleep(5000);
            links.get(i).click();
            driver.navigate().back();
            links = driver.findElements(By.tagName("a"));

        }
    }

Ответы [ 2 ]

0 голосов
/ 22 февраля 2020

эти ссылки могут отсутствовать или быть кликабельными, как упоминалось другими. используйте что-то вроде этого:

driver.manage().timeouts().implicitlyWait(20L, TimeUnit.SECONDS);

или даже лучше

Wait<WebDriver> wait = new FluentWait<WebDriver>(driver)
               .withTimeout(10, TimeUnit.SECONDS)
               .pollingEvery(2, TimeUnit.SECONDS)
               .ignoring(NoSuchElementException.class)
               .withMessage("Wait timed out after 10 seconds");

    wait.until(ExpectedConditions.presenceOfElementLocated(By.Id("..."))).click();
0 голосов
/ 22 февраля 2020

@ Bimle sh Некоторые элементы в DOM могут быть недоступны для щелчка во время попытки. Используйте «явное ожидание» вместо Thread.sleep, прежде чем нажать. Это решит вашу проблему. Например: WebDriverWait wait = new WebDriverWait (webDriver, timeoutInSeconds); wait.until (ExpectedConditions.elementToBeClickable (ELEMENTNAME));

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