Java Selenium "findElement" не находит существующий объект - PullRequest
0 голосов
/ 07 мая 2018

После того, как моя проблема была решена вчера (см. Ссылку ниже), появились новые проблемы. Во-первых, решение вышеуказанной проблемы работает только для IE. Когда я пытаюсь использовать chrome или firefox с тем же кодом для подачи (кроме, конечно, драйвера), я получаю сообщение об ошибке, как и в начале (до того, как я понизил версию IEDriverServer). см ссылку

Eclipse Java Selenium не удалось подключиться к localhost

Во-вторых. не происходит, когда я использую функцию findelement. Сообщение об ошибке «не удается найти е lement ". Однако этот элемент есть. Здесь страница, которая должна контролироваться.

https://accounts.google.com/signup/v2/webcreateaccount?continue=https%3A%2F%2Fwww.google.de%2F%3Fgws_rd%3Dssl&hl=de&flowName=GlifWebSignIn&flowEntry=SignUp

эта проблема уже часто запрашивается, но, к сожалению, ответы мне не помогают. Одним из решений было (так как findelement быстрее, чем браузер), чтобы установить следующую задержку. driver.manage (). таймауты (). implicitlyWait (5, TimeUnit.SECONDS);

другое решение состояло в том, чтобы искать id или xpath вместо name (поэтому name и id указаны ниже как findelement). пока безуспешно. ни один из упомянутых ключей не введен в поле (пароль и имя и т. д., я уже пробовал).

Вот статьи, которые ближе всего подходят к моей проблеме, но не помогли мне. Нет такого исключения элемента | Интернет-проводник .

Тот же CSS Slector не работает в Internet Explorer, но работает в Firefox

в любом случае. IE откроется, но никакой другой браузер и ни один элемент не будут заполнены. здесь код и сообщение об ошибке.

import org.openqa.selenium.firefox.FirefoxBinary;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.firefox.FirefoxProfile;
import org.openqa.selenium.ie.InternetExplorerDriver;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;
import org.openqa.grid.selenium.*;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import java.awt.Desktop;
import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;
import java.util.concurrent.TimeUnit;


public class firefoxöffner {




    public static void main(String[] args) throws IOException, URISyntaxException {
        System.setProperty("webdriver.gecko.driver","./geckodriver");

        String service = "D://IEDriverServer.exe";
        System.setProperty("webdriver.ie.driver", service);
        InternetExplorerDriver  driver = new InternetExplorerDriver();


        driver.get("https://accounts.google.com/signup/v2/webcreateaccount?flowName=GlifWebSignIn&flowEntry=SignUp");

        driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);
        WebElement myDynamicElement = driver.findElement(By.id("lastName"));

        driver.findElement(By.id("lastName")).sendKeys("B");
        driver.findElement(By.name("lastName")).sendKeys("A");
    }
}

Запущен сервер InternetExplorerDriver (64-разрядный) 3.8.0.0 Прослушивание через порт 47620 Разрешены только локальные соединения Май 06, 2018 11:29:28 NACHM. org.openqa.selenium.remote.ProtocolHandshake createSession ИНФОРМАЦИЯ: Обнаруженный диалект: W3C Исключение в потоке "main" org.openqa.selenium.NoSuchElementException: невозможно найти элемент с помощью селектора css == # lastName

Еще раз спасибо.

Ответы [ 2 ]

0 голосов
/ 07 мая 2018

Когда запускается в IE Вероятно, //*[@id="lastName"] не совсем дает вам точный элемент, с которым вы хотите работать. Вместо того, когда вы можете попробовать дать Xpath, как показано ниже

//*[@id="lastName"]//following-sibling::div"
0 голосов
/ 07 мая 2018

Если вы выполняете тесты Web Interface с Java + Selenium, я советую вам использовать NoraUi Open Source Framework.

Эта платформа управляет веб-драйвером IE, веб-драйвером Chrome и веб-драйвером FF.

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