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() может быть сделано на любом элементе формы.

Тебе решать.

http://docs.seleniumhq.org/docs/03_webdriver.jsp

Существует разница между 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 
Другие вопросы по тегам