Selenium Webdriver submit() против click()
Допустим, у меня есть input
в форме (выглядит как кнопка и взаимодействует как кнопка), которая генерирует некоторые данные (ну, сервер генерирует данные на основе параметров формы, но для пользователя кнопка делает это:)) на основе параметров в форма.
Когда я использую click()
, весь процесс зависает (на самом деле он зависает, без исключений и ошибок).
С сайта Selenium:
// Now submit the form. WebDriver will find the form for us from the element
element.submit();
Так что WebDriver имеет submit()
метод. Есть ли какая-то разница, с точки зрения логики, между использованием click()
на кнопке или submit()
?
7 ответов
submit()
Функция существует, чтобы сделать жизнь проще. Вы можете использовать его для любого элемента внутри тегов формы, чтобы отправить эту форму.
Вы также можете найти кнопку отправки и использовать click()
,
Так что единственная разница click()
должно быть сделано на кнопку отправки и submit()
может быть сделано на любом элементе формы.
Тебе решать.
Существует разница между click() и submit ().
submit () отправляет форму и выполняет URL-адрес, заданный атрибутом "action". Если у вас есть какая-либо javascript-функция или jquery-плагин для отправки формы, например, через ajax, submit() проигнорирует ее. С click() будут выполнены javascript-функции.
Я был большим поклонником submit()
Но не больше.
На веб-странице, которую я тестирую, я ввожу имя пользователя и пароль и нажимаю "Войти". Когда я призвал usernametextbox.submit()
, текстовое поле пароля очищается (становится пустым), и вход в систему продолжает сбой.
После того, как я сломал голову на некоторое время, когда я заменил usernametextbox.submit()
с loginbutton.click()
Работало как по волшебству.
Кроме того, исправьте меня, если я ошибаюсь, но я считаю, что submit будет ждать загрузки новой страницы, тогда как click немедленно продолжит выполнение кода
submit()
Метод можно использовать для нажатия на кнопку, присутствующую в форме, а атрибут Type должен быть "submit".
click()
Метод используется для нажатия на кнопку на веб-странице.
Поправь меня, если я ошибаюсь.
Ни submit()
ни click()
достаточно хорош Тем не менее, он работает нормально, если вы нажимаете клавишу ВВОД:
search_form = driver.find_element_by_id(elem_id)
search_form.send_keys(search_string)
search_form.click()
from selenium.webdriver.common.keys import Keys
search_form.send_keys(Keys.ENTER)
Протестировано на Mac 10.11, python 2.7.9, Selenium 2.53.5. Это работает параллельно, то есть возвращается после ввода клавиши ВВОД, не дожидаясь загрузки страницы.
.Click() - выполнять только операцию щелчка, как щелчок мышью.
.Submit () - Выполнить операцию ввода как событие ввода клавиатуры.
Например. Рассмотрим страницу входа, где она содержит имя пользователя и пароль, а также кнопку отправки.
При заполнении пароля, если мы хотим войти без нажатия кнопки входа. нам нужна кнопка пользователя.submit на пароле, где операция.click() не работает.[для входа в приложение]
Бриф.
driver.get("https:// anyURL");
driver.manage().window().maximize();
driver.manage().timeouts().implicitlyWait(30,TimeUnit.SECONDS);
driver.findElement(By.id("txtUserId")).sendKeys("abc@test.com");
WebElement text = driver.findElement(By.id("txtPassword")); text.sendKeys("password");
Thread.sleep(1000);
text.click(); //This will not work - it will on perform click operation not submit operation
text.submit(); //This will perform submit operation has enter key