java Selenium Webdriver submit()vs click()

x3naxklr  于 5个月前  发布在  Java
关注(0)|答案(8)|浏览(71)

假设我在一个表单中有一个input(看起来像一个按钮,交互方式也像一个按钮),它根据表单中的参数生成一些数据(好吧,服务器根据表单参数生成数据,但对于用户来说,按钮会这样做:)。
当我使用click()时,整个进程挂起(它实际上冻结了,没有异常或错误)。
Selenium网站:

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

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

xpszyzbs

xpszyzbs1#

submit()函数的作用是使工作更简单。你可以在表单标签中的任何元素上使用它来提交表单。
您也可以搜索提交按钮并使用click()
所以唯一的区别是click()必须在提交按钮上完成,而submit()可以在任何表单元素上完成。
你决定吧
http://docs.seleniumhq.org/docs/03_webdriver.jsp#user-input-filling-in-forms

o75abkj4

o75abkj42#

click()submit()之间存在差异。
submit()提交表单并执行由“action”属性指定的URL。如果您有任何javascript函数或jquery插件正在运行以提交表单(例如通过ajax),submit()将忽略它。使用click()将执行javascript函数。

lbsnaicq

lbsnaicq3#

我曾经是submit()的粉丝,但现在不再是了。
在我测试的网页中,我输入用户名和密码,然后单击Login。当我调用usernametextbox.submit()时,密码文本框被清除(变为空),登录一直失败。
在打破了我的头一段时间后,当我用loginbutton.click()替换usernametextbox.submit()时,它像魔术一样工作。

w8f9ii69

w8f9ii694#

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

kg7wmglp

kg7wmglp5#

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

pcww981p

pcww981p6#

submit()方法可用于单击表单中的按钮,Type属性应为“submit”。
click()方法用于点击网页中的按钮。
如果我错了请纠正我。

l2osamch

l2osamch7#

click()-仅执行单击操作,就像鼠标单击一样。
submit()-像键盘输入事件一样执行输入操作。
例如,考虑一个登录页面,其中包含用户名、密码和提交按钮。
在填写密码,如果我们想登录,而不点击登录按钮。我们需要用户提交按钮的密码,其中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

字符串

w8biq8rn

w8biq8rn8#

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

  • 按钮
  • 链路
  • 复选框
  • combobox

而submit()-submit()方法的目标必须是页面的HTML标记中的元素或其任何子元素。使用此方法,您不需要显式地将表单的提交按钮作为目标-您只需提交表单
它也可以处理button/link,但是异常会抛出“java.lang. UnloadedOperationException”
验证和参考链接-https://makersaid.com/submit-vs-click-selenium/
示例-x1c 0d1x
这里我没有捕获“登录”按钮元素,我只是使用了最后一个元素,这是密码,然后使用提交,它作为输入没有任何错误。


相关问题