Selenium输入文本在JSF中不起作用

Selenium输入文本在JSF中不起作用,jsf,selenium,jsf-2,Jsf,Selenium,Jsf 2,我在JSF2.0中有一些页面需要验证字段。这是跨字段验证,所以我将字段绑定到UIComponents。这三个字段都是,因此都绑定到HtmlInputText 验证方法只是从所有HtmlInputTexts中读取值。当我运行应用程序并手动使用时,它运行得非常好。问题是,当selenium输入值时,它不起作用。selenium代码的一部分是: selenium.type("identifier=myForm:myTextField", "someText"); 因此,它将文本输入到文本字段中。它的

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

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

selenium.type("identifier=myForm:myTextField", "someText");
因此,它将文本输入到文本字段中。它的作品,我可以看到文本是真的存在。但是,当我调试从UIComponents读取值的验证方法时,单击“提交”后,该值为
null
。手动输入时不为空,只有selenium输入时才为空


为什么呢?为什么硒不起作用?它和我手工做的非常相似,但是它是手工做的,selenium不起作用。

注意,JSF生成的ID通常不是您分配的ID。例如,名为
myForm
的表单中的
myTextField
将有一个ID
myForm:myTextField
,因为JSF负责ID,所以我更喜欢在
styleClass
属性中设置一个“唯一ID”,该属性呈现为
class
。然后用该类选择输入


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

我已经考虑过了。也许我简化了我的例子太多,应该有类似“form:myTextField”的东西。不管怎样,它是有效的。我可以在由selenium启动的浏览器中看到文本已填充。我从未遇到过selenium这样的问题。您似乎暗示这是特定于使用
绑定的组件的。那么,绑定更少的输入字段就行了?模型值是否已更新?是否调用了bean操作方法?是否有
f:ajax
参与?无论如何,您的
、相关的托管bean代码和生成的JUnit/TestNG
@Test
方法的尽可能小的摘录将非常有用,这样我们就可以尝试重现问题和/或更好地发现错误。谢谢@BalusC。我发现了这个问题,并在下一个问题中进行了描述:问题是当隐藏字段在我要验证的字段之前出现在页面中时。对于selenium来说,这到底是个什么问题?这个隐藏字段是由JS填充的吗?