Подтвердить что ты не робот

Команда click в selenium webdriver не работает

Недавно я сделал экспорт моего кода IDE селена на веб-драйвер селена. Я обнаружил, что многие команды, которые работали в среде IDE, либо не работают, либо утверждают, что веб-драйвер selenium не поддерживает вообще. До сих пор я занимался этими вопросами по одному за раз, что было меньше идеального...

В настоящее время я работаю над тем, чтобы выяснить, почему нажатие на кнопку не работает с веб-драйвером, пока оно ранее работало в Selenium IDE. Мой браузер - FF 13, а моя ОС - Ubuntu.

Фрагмент кода

WebElement loginButton = driver.findElement(By.name("submit"));
loginButton.click();

Я ранее пробовал

driver.findElement(By.name("submit")).click();

однако вышеприведенная строка также не удалась. Элемент выбирается, однако он не регистрирует нас, как хотелось бы. Я нашел другие страницы с похожими проблемами, но их проблема, казалось, была с Internet Explorer, а не с Firefox. Я даже не хочу думать о проблемах, которые IE даст мне по дороге.

спасибо,

P.S. Совет по лучшему способу перехода из Selenium IDE в Selenium Webdriver, не теряя при этом всех тестов, которые я написал, также может решить эту проблему.

4b9b3361

Ответ 1

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

driver.findElement(By.name("submit")).sendKeys(Keys.RETURN);

или же

driver.findElement(By.name("submit")).sendKeys(Keys.ENTER);

Ответ 2

Главное, на что нужно обратить внимание, - это кнопка Включена или нет. Вы все еще можете щелкнуть их, и ничто не упадет, и элемент будет там, но он не готов к щелчку, поэтому просто ничего не делает.

Я использую webdriver, и он взял меня большую часть дня, чтобы понять это!

Следующий метод работает надежно (в моей среде для одной кнопки!)

    private void TryClick(By selector)
    {
        var wait = WaitUpTo(TimeSpan.FromSeconds(10));
        var element = wait.Until(ExpectedConditions.ElementIsVisible((selector)));

        //really important bit!
        WaitUpTo(TimeSpan.FromSeconds(5))
            .Until(d => element.Enabled);

        element.Click();
    }

вы используете его что-то вроде

TryClick(By.XPath("//button[contains(.//*,'Some Text')]"));

Ответ 3

Спасибо всем за ответы! Я нашел решение, оказалось, что я не предоставил достаточно кода в своем вопросе.

Проблема заключалась в НЕ с функцией click(), но вместо этого была связана с кассовой аутентификацией, используемой с моим проектом. В Selenium IDE мой тест входа в систему выполнил команду "открыть" в следующее местоположение,

/cas/login?service=https%1F%8FAPPNAME%2FMOREURL%2Fj_spring_cas_security

Это сработало. Я экспортировал тест в Selenium webdriver, который, естественно, сохранил это место. Команда в Selenium Webdriver была,

driver.get(baseUrl + "/cas/login?service=https%1A%2F%8FAPPNAME%2FMOREURL%2Fj_spring_cas_security");

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

driver.get(baseUrl + "MOREURL/");

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

Примечание. Я закрыл URL-адреса, используемые выше для защиты моего продукта.

Ответ 4

Пожалуйста, обратитесь сюда https://code.google.com/p/selenium/issues/detail?id=6756 В круге

Откройте параметры отображения системы и убедитесь, что размер шрифта установлен на 100% Он работал удивительно

Ответ 5

Нет ничего плохого в любой версии вашего кода. Что бы ни вызывало это, это не оно.

Вы проверили тройник на вашем локаторе? У вашего элемента определенно есть имя = submit not id = submit?

Ответ 6

Я использовал firefox, и по какой-то причине он не выполнял команду щелчка, хотя из последних 2 месяцев он работал. Мое чувство было использовать sendKeys, и эта страница решила проблему. Теперь я использую sendKeys (Keys.Enter)

Ответ 7

Исключение в потоке "main" org.openqa.selenium.WebDriverException: неизвестная ошибка: Элемент... недоступен для щелчка в точке (362, 403). Другой элемент получит щелчок:... (Информация сеанса: chrome = 72.0.3626.121) (Информация о драйвере: chromedriver = 2.46.628388 (4a34a70827ac54148e092aafb70504c4ea7ae926), платформа = Linux 4.15.0-20-generic x86_64) (ПРЕДУПРЕЖДЕНИЕ: сервер не предоставил никакой информации о трассировке стека) Продолжительность или время ожидания команды: 0 миллисекунд Информация о сборке: версия: '3.141.59', версия: 'e82be7d358', время: '2018-11-14T08: 25: 48' Информация о системе: хост: ' gagandeep-desktop ', ip:' 127.0.1.1 ', os.name:' Linux ', os.arch:' amd64 ', os.version:' 4.15.0-20-generic ', java.version: '11.0. 3 'Информация о драйвере: org.openqa.selenium.chrome.ChromeDriver Capabilities {acceptInsecureCerts: false, acceptSslCerts: false, applicationCacheEnabled: false, browserConnectionEnabled: false, browserName: chrome, chrome: {chromedriverVersion: 2.46.654aa, 4: 2.46.654a70 (4) userDataDir: /tmp/.org.chromium.Chromium...}, cssSelectorsEnabled: true, databaseEnabled: false, goog: chromeOptions: {debuggerAddress: localhost: 36831}, handlesAlerts: true, hasTouchScreen : false, javascriptEnabled: true, locationContextEnabled: true, mobileEmulationEnabled: false, nativeEvents: true, networkConnectionEnabled: false, pageLoadStrategy: нормальный, платформа: LINUX, platformName: LINUX, proxy: Proxy(), вращаемый: false, setWindowFile: true: false, takeHeapSnapshot: true, takeScreenshot: true, тайм-ауты: {неявно: 0, pageLoad: 300000, script: 30000}, непредвиденныйAlertBehaviour: ignore, unhandledPromptBehavior: ignore, версия: 72.0.3626.121, webStorageEnabled: true }70968396839282: 5939 java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0 (родной метод) в java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62nor.jpg)..newInstance(DelegatingConstructorAccessorImpl.java:45) в java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:490) в org.openqa.selenium.re mote.ErrorHandler.createThrowable(ErrorHandler.java:214) в org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:166) в org.openqa.selenium.remote.httava.ponseHHTRTJS 40) at org.openqa.selenium.remote.http.AbstractHttpResponseCodec.decode(AbstractHttpResponseCodec.java:80) по адресу org.openqa.selenium.remote.http.AbstractHttpResponseCodec.decode(AbstractHttpjj org.jpg) org.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:158) по адресу org.openqa.selenium.remote.service.DriverCommandExecutor.execute(DriverCommandExecutor.java:83) по адресу org.openqa.selenium.remriririwverj: 552) в org.openqa.selenium.remote.RemoteWebElement.execute(RemoteWebElement.java:285) в org.openqa.selenium.remote.RemoteWebElement.click(RemoteWebElement.java:84) в Патрисии .Login.main. Java: 24)