假设我在表单中有一个input
(看起来像一个按钮并像按钮一样交互),它会生成一些数据(好吧,服务器根据表单参数生成数据,但对于用户来说,按钮完成它:))基于表单中的参数。
当我使用click()
时,整个过程会挂起(它实际上会冻结,没有例外或错误)。
来自Selenium网站:
// Now submit the form. WebDriver will find the form for us from the element
element.submit();
所以WebDriver有一个submit()
方法。在按钮上使用click()
或submit()
之间是否存在逻辑上的差异?
答案 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