如何点击提交按钮

Posted

技术标签:

【中文标题】如何点击提交按钮【英文标题】:How can i click submit button 【发布时间】:2015-12-23 03:09:39 【问题描述】:

如何在给定的html上点击提交按钮

<span class="sbt-btn-wrap relative">
<input class="submit icon" type="submit" onclick="submitmnLogin($(this), 'testPrepLogin');trackGaEvent('Content Hub Home','Login Popup','Login Button');">

我试过了

driver.findElement(By.className("sbt-btn-wrap relative")).click();

driver.findElement(By.className("submit icon")).click();

但它不起作用。

【问题讨论】:

***程序员为程序员提供的社区,请在发布任何问题之前访问其How to Ask 部分,因为它也会对您和其他 SOuser 有所帮助。 @vivekkupadhyay - 好吧,我认为点击应该以编程方式执行(请参阅“我已经尝试过...”) @0X0nosugar vivek 的观点是,这是一个非常非常基本的问题。 OP 应该能够查看错误消息、谷歌它们,并为他/她自己找到此类问题的答案。 @JeffC - 好的。我在审核队列中遇到了这个问题,您可以看到我在 SO 上的时间不长。有时很难说出一个人可以轻松找到什么,“帮助部分”明确提到人们可能会要求家庭作业帮助如果他们“包括他们所做的工作总结” .话虽如此,我的意思是对 OP 很好,当然也无意过分批评其他人。如果有人有其他印象,我很抱歉。 @0X0nosugar 你是对的,我没有把你的评论当作批评。我只是想指出,即使有人遵循良好格式的规则,也有一些问题不应该被问到。 asking a good question 的一部分正在做你自己的研究。如果 OP 做了他们的功课并用谷歌搜索了他们自己的问题,他们就会找到答案。如果他们找到了答案但不理解,那将是一个更合适的问题,但即使是这些问题也很可能已经被问及并得到了回答。 【参考方案1】:

当你有两个用空格分隔的类名时,你不能在上面使用By.className。而是使用By.cssSelector 来单击元素。方法如下-

driver.findElement(By.cssSelector(".submit.icon")).click();

如果您仍想使用 className,请使用元素唯一的类名并单击它 -

driver.findElement(By.className("submit")).click();

您可以使用其他属性来单击输入元素。我更喜欢使用 cssSelector 而不是 xpath,因为它的速度很慢 -

driver.findElement(By.cssSelector("input[type='submit']")).click();

这也是一个 xpath 的例子 -

driver.findElement(By.xpath("//input[@type='submit']")).click();

如果您无法以独特的方式找到提交按钮元素,请使用其他独特的元素来查找输入元素。

driver.findElement(By.cssSelector(".sbt-btn-wrap relative .submit")).click();

希望对你有帮助。

【讨论】:

你是不是错过了 xpath 中的一些转义?【参考方案2】:

有几种方法可以为按钮使用这个 HTML 代码

<input type="button" id="btn_submit" class="some_class" value="Submit">

并使用以下 jquery 代码(您必须在页面上包含 jquery!)

$('#btn_submit').click(function() 
    alert( "Handler for .click() called." );
);

或者仍然使用 jquery 执行相同的操作,但使用类而不是 ID 处理单击(仅当您想在多个元素上处理相同时才推荐)

$('.some_class').click(function() 
    alert( "Handler for .click() called." );
);

现在通过 ID 使用 javascript 无需包含 jquery 库

function myFunction() 
    document.getElementById("btn_submit").click(); // Click on the checkbox

通过 css

driver.findElement(By.cssSelector(".some class)).click();

希望这是您想要的,这对您有所帮助。 也检查您问题的第一条评论

【讨论】:

感谢 Girish 和 Pedro 如果它的工作标记为已回答以帮助社区的其他成员。【参考方案3】:

您可以通过 CSSSelector 使用 List web 元素来实现这一点

String cssSelectorOfButton="input[type='button'][id='login']"; 
//****Add cssSelector of your button webelement
List<WebElement> loginButton 
=driver.findElements(By.cssSelector(cssSelectorOfButton));
loginButton.get(0).click();

【讨论】:

【参考方案4】:

.click() 替换为.submit(),它可能会起作用。您可能正在使用 HTML 表单。

【讨论】:

【参考方案5】:
driver.find_element_by_css_selector('button[type=submit]').click()

试试这个,它对我有用

【讨论】:

以上是关于如何点击提交按钮的主要内容,如果未能解决你的问题,请参考以下文章

jQuery:如何获取表单提交时点击了哪个按钮?

如何防止表单重复提交

解决Vue项目按钮重复(高频)提交问题!

多次点击提交后如何只提交一次表单?

如何在视图中点击提交按钮而不必先关闭键盘?

Java 和 HTMLUnit:如何点击提交按钮?