63

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

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

从硒网站:

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

所以 WebDriver 有一个submit()方法。从逻辑上讲,在click()按钮上使用 a 或之间有什么区别submit()吗?

4

7 回答 7

81

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

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

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

由你决定。

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

于 2013-07-08T15:35:29.427 回答
40

click()和之间有区别submit()

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

于 2014-01-20T15:49:45.323 回答
13

我是一个很棒的粉丝,submit()但现在不是了。

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

在打破了我的头一段时间后,当我用 替换usernametextbox.submit()loginbutton.click(),它就像魔法一样工作。

于 2014-04-22T23:06:32.963 回答
8

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

于 2014-01-20T19:27:30.137 回答
2

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

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

如果我错了,请纠正我。

于 2017-03-28T08:46:20.370 回答
2

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

于 2016-06-15T11:12:49.997 回答
1

click()- 只执行点击操作,就像鼠标点击一样。

submit()- 像键盘 Enter 事件一样执行 Enter 操作。

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

如果我们想在不点击登录按钮的情况下登录,请填写密码。我们需要在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 
于 2018-07-02T10:11:31.080 回答