首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Selenium和JSF2.0

Selenium和JSF2.0
EN

Stack Overflow用户
提问于 2011-09-01 16:57:32
回答 3查看 3.6K关注 0票数 4

当我使用JSF2.0生成SelectOneMenu时,我在xhtml中指定的id被附加到从JSF生成的ID。

例如,在my_fancy_id之外,它生成j_idt9:my_fancy_id

现在,我想用Selenium 2 Web驱动程序测试我的页面。我尝试重新找到我的select菜单:

代码语言:javascript
复制
driver.findElement(By.id("my_fancy_id"));

当然,它找不到任何东西,因为id已更改。在页面上查找选择菜单的最佳方式是什么?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-09-01 17:04:54

通常,表单的id被放在表单中的所有元素id的前面。如果你没有设置表单id,JSF会帮你设置( 'j_idt9')。解决方案:为表单分配一个id,并尝试在findElement方法中使用完整的id,例如:

代码语言:javascript
复制
<h:form id="myForm">
 ...
</h:form>

这样叫它:

代码语言:javascript
复制
driver.findElement(By.id("myForm:my_fancy_id"));
票数 6
EN

Stack Overflow用户

发布于 2011-09-01 20:50:38

或者,您可以添加,这样表单的id就不会被放在前面

票数 3
EN

Stack Overflow用户

发布于 2011-09-01 21:00:51

在控件上设置component identifier;呈现器向标记发出client identifier

这允许JSF发出有效的HTML (它们必须是唯一的),即使面对模板和复杂控件也是如此。控件将由任何作为NamingContainer (如form)的父级提供命名空间。

在某些容器中,客户机标识符将由视图命名,但这通常只发生在portlet环境中。

一些组件库(如Tomahawk)具有forceId属性,但在使用它们时必须格外小心。我写了一篇更广泛的关于客户端标识符here的文章。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7268086

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档