【问题标题】:Selenium input text not working in JSFSelenium 输入文本在 JSF 中不起作用
【发布时间】:2010-12-14 11:36:37
【问题描述】:

我在 JSF2.0 中有一些页面需要验证字段。这是跨字段验证,所以我将字段绑定到 UIComponents。这三个字段都是<h:inputText>,所以都绑定到HtmlInputText

验证方法只是从所有HtmlInputTexts 中读取值。当我运行应用程序并手动使用它时,它工作得很好。问题是当 selenium 输入值时它不起作用。 selenium 代码的一部分是:

selenium.type("identifier=myForm:myTextField", "someText");

所以它将文本输入到文本字段中。它有效,我可以看到文本确实存在。但是当我调试从 UIComponents 读取值的验证方法时,单击“提交”后该值为null。手动输入时不是null,只有selenium输入。

这是为什么呢?为什么硒不起作用?它和我手工做的差不多,但它是手工工作的,对 selenium 不起作用。

【问题讨论】:

  • 我从来没有遇到过这样的 Selenium 问题。您似乎在暗示这是特定于使用 binding 的组件。那么,无绑定的输入字段是否可以正常工作?模型值是否已更新?是否调用了 bean 操作方法?是否有一些f:ajax 参与?无论如何,您的<h:form>、相关托管 bean 代码和生成的 JUnit/TestNG @Test 方法的最小可能摘录会有所帮助,以便我们可以尝试重现问题和/或更好地发现错误。
  • 谢谢@BalusC。我发现了问题,并在我的下一个问题中进行了描述:stackoverflow.com/questions/4439716 问题是当隐藏字段在我要验证的字段之前的页面中时。
  • 这究竟是硒的问题?这个隐藏字段是JS填充的吗?

标签: jsf selenium jsf-2


【解决方案1】:

请注意,JSF 生成的 ID 通常不是您分配的 ID。例如 myTextField 在名为 myForm 的表单中将有一个 ID myForm:myTextField

【讨论】:

  • 我已经考虑到了。也许我简化了我的例子太多,应该有“form:myTextField”之类的东西。无论如何它有效。我可以在由 selenium 启动的浏览器中看到填充了文本。
【解决方案2】:

由于 JSF 负责 ID,我更喜欢在 styleClass 属性中设置一个“唯一 ID”,该属性呈现为 class。然后选择该类的输入。

元素上的“唯一 ID”可能不止一个。然后我更喜欢搜索一个包含“唯一 id”的类的元素。它使您可以在不更改测试的情况下更改样式。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-29
    • 1970-01-01
    • 2021-07-14
    • 2016-01-21
    • 2012-02-09
    • 1970-01-01
    相关资源
    最近更新 更多