Селен (новейший) не работает

Я пытаюсь заставить селен работать с eclipse и Java. Все продукты (Selenium, Java, JDK, Eclipse) обновлены, и все файлы .jar импортируются в eclipse. Итак, проблема в том, что все работает нормально, пока я не хочу найти элемент. Я думаю, что это ошибка в его поиске. Но на другом моем компьютере я установил те же версии этих продуктов, и там они работают. Я новичок в борьбе за это около 1 недели.

Вот мой код Java:

public static void main(String[] args) {
        // TODO Auto-generated method stub

        System.setProperty("webdriver.gecko.driver", "C:\\Users\\yf0phgm\\eclipse\\Gecko\\geckodriver.exe");
        WebDriver driver = new FirefoxDriver();
        // Thread.sleep(3000);
        driver.get("http://www.google.de");
        //Wait for HTTP Proxy (Logged on by SSO)
        try {
            Thread.sleep(8000);
        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        // driver.findElement(By.partialLinkText("Über")).click();
        WebElement BtnClick = driver.findElement(By.name("btnI"));
        //
        BtnClick.click();
        // driver.quit();
}

Консоль говорит:

1521712507113   geckodriver INFO    geckodriver 0.20.0 (0ac3698a74a7b1a742682b8e704f1f418df827ed 2018-03-13)

1521712507119   geckodriver INFO    Listening on 127.0.0.1:20002

1521712507795   mozrunner::runner   INFO    Running command: "C:\\Program Files (x86)\\Mozilla Firefox\\firefox.exe" "-marionette" "-profile" "C:\\Users\\yf0phgm\\AppData\\Local\\Temp\\rust_mozprofile.dP85CqqTDXoP"

1521712508244   Marionette  INFO    Enabled via --marionette

1521712510272   Marionette  INFO    Listening on port 61771

1521712510502   Marionette  WARN    TLS certificate errors will be ignored for this session

Mär 22, 2018 10:55:10 AM org.openqa.selenium.remote.ProtocolHandshake createSession

INFORMATION: Detected dialect: W3C

Exception in thread "main" org.openqa.selenium.NoAlertPresentException: No modal dialog is currently open

Build info: version: '3.11.0', revision: 'e59cfb3', time: '2018-03-11T20:33:08.638Z'

System info: host: 'YF0PH011', ip: '10.103.2.160', os.name: 'Windows 7', os.arch: 'x86', os.version: '6.1', java.version: '1.8.0_161'

Driver info: org.openqa.selenium.firefox.FirefoxDriver

Capabilities {acceptInsecureCerts: true, browserName: firefox, browserVersion: 59.0.1, javascriptEnabled: true, moz:accessibilityChecks: false, moz:headless: false, moz:processID: 8020, moz:profile: C:\Users\yf0phgm\AppData\Lo..., moz:useNonSpecCompliantPointerOrigin: false, moz:webdriverClick: true, pageLoadStrategy: normal, platform: XP, platformName: XP, platformVersion: 6.1, rotatable: false, timeouts: {implicit: 0, pageLoad: 300000, script: 30000}}

Session ID: 7b8e4c7c-e7a3-45d8-b97c-5e9beff67b1a

*** Element info: {Using=name, value=btnI}
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
    at java.lang.reflect.Constructor.newInstance(Unknown Source)
    at org.openqa.selenium.remote.http.W3CHttpResponseCodec.createException(W3CHttpResponseCodec.java:187)
    at org.openqa.selenium.remote.http.W3CHttpResponseCodec.decode(W3CHttpResponseCodec.java:122)
    at org.openqa.selenium.remote.http.W3CHttpResponseCodec.decode(W3CHttpResponseCodec.java:49)
    at org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:158)
    at org.openqa.selenium.remote.service.DriverCommandExecutor.execute(DriverCommandExecutor.java:83)
    at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:545)
    at org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:319)
    at org.openqa.selenium.remote.RemoteWebDriver.findElementByName(RemoteWebDriver.java:397)
    at org.openqa.selenium.By$ByName.findElement(By.java:303)
    at org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:311)
    at BasicPackage.OpenBrowser.main(OpenBrowser.java:25)
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
0
213
1

Ответы 1

Вместо использования локатора название, как в WebElement BtnClick = driver.findElement(By.name("btnI"));, вы можете попробовать с xpath:

WebElement BtnClick = driver.findElement(By.xpath("//input[@name='btnI']"));

Обновлять

Я взял тот же код и попробовал с By.name("btnI") и By.xpath("//input[@name='btnI']") и получил тот же результат, как показано ниже:

package demo;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;

public class Google_Search_IamLucky_Button {

    public static void main(String[] args) 
    {
        System.setProperty("webdriver.gecko.driver", "C:\\Utility\\BrowserDrivers\\geckodriver.exe");
        WebDriver driver = new FirefoxDriver();
        driver.get("http://www.google.de");
        //WebElement BtnClick = driver.findElement(By.name("btnI"));
        WebElement BtnClick = driver.findElement(By.xpath("//input[@name='btnI']"));
        System.out.println("Identified -I am Feeling Lucky- button");
        BtnClick.click();
        System.out.println("Clicked on -I am Feeling Lucky- button");
        driver.quit();
        System.out.println("Quitted");
    }

}

Вот успешный вывод консоли:

Identified -I am Feeling Lucky- button
Clicked on -I am Feeling Lucky- button
Quitted

Я пробовал, но он не щелкает. Итак, любопытный тот же самый Код на моем ПК Provate отлично работает без текста после элемента: информация .... Так что я думаю, что код после информации об элементе не является предупреждением, это ошибка. Возможно, что-то пошло не так в конфигурации Java?

Matthias Günther 22.03.2018 11:20

@DebanjanB Я думаю, проблема в другом. Посмотрите на stacktrace Exception in thread "main" org.openqa.selenium.NoAlertPresentException: No modal dialog is currently open

Fenio 22.03.2018 11:31

Хорошо, есть ли что-нибудь исправить?

Matthias Günther 22.03.2018 12:00

@ MatthiasGünther Не могли бы вы обновить вопрос, указав всю трассировку стека ошибок?

DebanjanB 22.03.2018 12:02

Как я могу запустить стек ошибок?

Matthias Günther 22.03.2018 12:11

Должен ли я конфигурироваться в коде? Извини, я тупой новичок :-(

Matthias Günther 22.03.2018 12:33

Другие вопросы по теме