如何点击提交按钮
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()
试试这个,它对我有用
【讨论】:
以上是关于如何点击提交按钮的主要内容,如果未能解决你的问题,请参考以下文章