Selenium Webdriver submit()vs click()

时间:2013-07-08 15:10:11

标签: java selenium internet-explorer selenium-webdriver submit

假设我在表单中有一个input(看起来像一个按钮并像按钮一样交互),它会生成一些数据(好吧,服务器根据表单参数生成数据,但对于用户来说,按钮完成它:))基于表单中的参数。

当我使用click()时,整个过程会挂起(它实际上会冻结,没有例外或错误)。

来自Selenium网站:

// Now submit the form. WebDriver will find the form for us from the element
element.submit();

所以WebDriver有一个submit()方法。在按钮上使用click()submit()之间是否存在逻辑上的差异?

7 个答案:

答案 0 :(得分:61)

submit()功能可以让生活更轻松。您可以在表单标记内的任何元素上使用它来提交该表单。

您还可以搜索提交按钮并使用click()

唯一的区别是click()必须在提交按钮上完成,submit()可以在任何表单元素上完成。

取决于你。

http://docs.seleniumhq.org/docs/03_webdriver.jsp#user-input-filling-in-forms

答案 1 :(得分:29)

click()和submit()之间存在差异。

submit()提交表单并执行“action”属性给出的url。如果您正在运行任何javascript-function或jquery-plugin来提交表单,例如通过ajax,submit()将忽略它。使用click(),将执行javascript函数。

答案 2 :(得分:12)

我是submit()的忠实粉丝,但现在不是了。

在我测试的网页中,输入用户名和密码,然后单击“登录”。当我调用usernametextbox.submit()时,密码文本框被清除(变空)并且登录失败。

一段时间后,当我用usernametextbox.submit()取代loginbutton.click()时,我的头部被打破了,它就像魔术一样。

答案 3 :(得分:6)

另外,如果我错了,请纠正我,但我相信提交将等待加载新页面,而click会立即继续执行代码

答案 4 :(得分:1)

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键后返回,不等待页面加载。

答案 5 :(得分:1)

submit()方法可用于点击表单中的按钮,Type属性应为“submit”。

click()方法用于点击网页中的按钮。

如果我错了,请纠正我。

答案 6 :(得分:1)

.Click()-仅执行单击操作,就像单击鼠标一样。

.Submit()-执行Enter操作,就像键盘Enter事件一样。

例如。考虑一个包含用户名,密码和提交按钮的登录页面。

在填写密码时,如果我们要不单击登录按钮就登录。我们需要在.click()操作不起作用的密码上使用.submit按钮。[登录到应用程序]

Brif。

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