Selenium Webdriver submit() vs click()
Скажем, у меня есть input
в форме (выглядит как кнопка и взаимодействует как кнопка), которая генерирует некоторые данные (ну, сервер генерирует данные на основе параметров формы, но для пользователя кнопка делает это:)) на основе параметров в форме.
Когда я использую click()
, весь процесс зависает (он фактически зависает, никаких исключений или ошибок).
На веб-сайте Selenium:
// Now submit the form. WebDriver will find the form for us from the element
element.submit();
Итак, у WebDriver есть метод submit()
. Есть ли какая-то разница, логически разумная, между использованием click()
на кнопке или submit()
?
Ответы
Ответ 1
Функция submit()
позволяет сделать жизнь проще. Вы можете использовать его на любом элементе внутри тегов формы, чтобы отправить эту форму.
Вы также можете выполнить поиск кнопки отправки и использовать click()
.
Таким образом, единственная разница в click()
должна выполняться в кнопке отправки, а submit()
может выполняться в любом элементе формы.
Это вам.
http://docs.seleniumhq.org/docs/03_webdriver.jsp#user-input-filling-in-forms
Ответ 2
Существует разница между click() и submit().
submit() отправляет форму и выполняет URL-адрес, который задается атрибутом "действие". Если у вас есть javascript-функция или jQuery-плагин для отправки формы, например. через ajax, submit() будет игнорировать его. С помощью click() будут выполняться javascript-функции.
Ответ 3
Я был большим поклонником submit()
но больше не был.
На тестируемой веб-странице введите имя пользователя и пароль и нажмите "Войти". Когда я вызываю usernametextbox.submit()
, текстовое поле пароля очищается (становится пустым), и логин продолжает сбой.
Когда-то сломав голову, когда я заменил usernametextbox.submit()
с помощью loginbutton.click()
, он работал как волшебство.
Ответ 4
Кроме того, исправьте меня, если я ошибаюсь, но я считаю, что submit будет ждать загрузки новой страницы, тогда как клик будет продолжать выполнение кода
Ответ 5
Ни submit()
, ни click()
недостаточно. Однако он отлично работает, если вы следуете за ним клавишей ENTER:
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. Это выполняется параллельно, то есть возвращает после ввода клавиши ENTER, не дожидаясь загрузки страницы.
Ответ 6
submit()
метод можно использовать, чтобы щелкнуть по кнопке, присутствующей в форме, и атрибут Type должен быть "submit".
click()
используется для нажатия на кнопку на веб-странице.
Исправьте меня, если я ошибаюсь.
Ответ 7
.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("[email protected]");
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