Selenium Webdriver 提交()与点击()

问题描述 投票:0回答:8

假设我在表单中有一个

input
(看起来像一个按钮,并且像按钮一样交互),它会生成一些数据(嗯,服务器根据表单参数生成数据,但对于用户来说,按钮会这样做:) )基于表单中的参数。

当我使用

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

来自 Selenium 网站:

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

所以 WebDriver 有一个

submit()
方法。在按钮上使用
click()
submit()
之间有逻辑上的区别吗?

java selenium internet-explorer selenium-webdriver submit
8个回答
88
投票

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

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

click()

所以唯一的区别是

click()
必须在提交按钮上完成,而
submit()
可以在任何表单元素上完成。

这取决于你。

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


40
投票

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

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


14
投票

我是

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

在我测试的网页中,输入用户名和密码,然后单击“登录”。当我调用

usernametextbox.submit()
时,密码文本框被清除(变为空)并且登录不断失败。

在打破我的头一段时间后,当我用

usernametextbox.submit()
替换
loginbutton.click()
时,它就像魔术一样起作用。


9
投票

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


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


2
投票

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

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

如果我错了请纠正我。


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("[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 

0
投票

element.click() 方法适用于所有类型的

  • 按钮
  • 链接
  • 复选框
  • 组合框

而提交() - Submit() 方法的目标必须是页面或其任何子元素的 HTML 标记内的元素。使用此方法,您不需要明确定位表单的提交按钮 - 您只需提交表单

它也适用于按钮/链接,但异常将抛出“java.lang.UnsupportedOperationException”

经过验证的参考链接 - https://makersaid.com/submit-vs-click-selenium/

© www.soinside.com 2019 - 2024. All rights reserved.