【问题标题】:Selenium: How to click an HTML button element?Selenium:如何单击 HTML 按钮元素?
【发布时间】:2011-02-18 20:06:06
【问题描述】:

我在页面上有按钮,用作指向另一个页面的链接。所以当用户点击按钮时,他们会被重定向到正确的页面。

我正在使用 PHPUnit 的 Selenium 扩展,我想测试按钮是否正确重定向了用户。这是我要测试的 HTML:

<button onclick="window.location='/sponsor';" value="Continue" type="button" id="sponsorContinue" name="sponsorContinue">Continue</button>

我已经尝试了很多不同的方法来点击按钮,但我似乎无法让其中任何一种工作:

$this->click("//button[@id='sponsorContinue']");

此命令执行并且不会引发任何错误,但页面不会被重定向。当我手动单击按钮时它工作正常。我该怎么办?

【问题讨论】:

  • 这个 sn-p 对我来说很好用。您使用的是什么浏览器/操作系统?

标签: php selenium phpunit selenium-rc


【解决方案1】:

这就是问题所在……HTML 是错误的,它迫使用户使用 javascript 继续到下一页。请改用此 HTML。它更干净,不依赖于 javascript。

<form method="get" action="/sponsor">
    <button type="submit" id="sponsorContinue">Continue</button>
</form>

此外,这现在可以工作了:

$this->click('sponsorContinue');

但是,如果你想让window.location 工作,see this question

【讨论】:

  • +1 用于无 Javascript 的解决方案。但是为什么 Selenium 不触发 onclick 事件呢?
  • 我同意在这种情况下更改按钮 HTML。但是,如果您将来需要触发事件,Selenium 允许您使用 fireEvent 来执行此操作!
  • 我没有尝试过 Safari 4,但很抱歉 fireEvent 不起作用。虽然不是“纯”,但您可以单击并使用 javaScript 注入手动调用 onClick js 函数。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-26
  • 2017-03-25
  • 1970-01-01
  • 1970-01-01
  • 2021-03-29
相关资源
最近更新 更多