Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Selenium DevExpress有没有办法显式设置对象的ID?_Selenium_Devexpress_Watir_Web Testing - Fatal编程技术网

Selenium DevExpress有没有办法显式设置对象的ID?

Selenium DevExpress有没有办法显式设置对象的ID?,selenium,devexpress,watir,web-testing,Selenium,Devexpress,Watir,Web Testing,我正在测试一个使用DevExpress开发的新网页。对象ID和html ID都以随机字符串的形式出现,与它们标识的内容无关 即: a class=dxm content dxm hasText dx href=/CR/SDPersonellHomePage id=HeaderMenu\u DXI0i0\u T style=float:none;> span class=dx vam>摘要页/span>/a> 有没有办法告诉DevExpress给这个对象一个更有意义的ID? 或者添加另一个参数,我

我正在测试一个使用DevExpress开发的新网页。对象ID和html ID都以随机字符串的形式出现,与它们标识的内容无关

即: a class=dxm content dxm hasText dx href=/CR/SDPersonellHomePage id=HeaderMenu\u DXI0i0\u T style=float:none;> span class=dx vam>摘要页/span>/a>

有没有办法告诉DevExpress给这个对象一个更有意义的ID?
或者添加另一个参数,我们可以使用它来提高测试工件的可读性?

如果模式本身是唯一的,您可以使用正则表达式来匹配属性。它比精确的字符串慢,但更灵活。例如:

browser.link(id: /HeaderMenu_\w{6}_T/)
browser.link(id: /HeaderMenu_\w{6}_T/, class: 'dx-vam')
browser.link(id: /HeaderMenu_\w{6}_T/, class: /^dx/)
browser.link(id: /^HeaderMenu_/, href: /PersonellHomePage$/)

在与DevExpress支持人员进行了几次对话后,他们现在声称他们实际上不支持Selenium,并建议使用他们自己的测试引擎

回顾一下,这个引擎仅仅比一个记录和回放工具要好。 DevExpress明确表示,他们不建议使用“Id”参数进行自动测试,并且迄今为止还未提供添加自定义参数以替代其使用的方法

此时,如果您计划构建任何持久的自动化测试,我必须建议您不要使用此工具


如果DevExpress回复了一个可行的解决方案,我将对此进行更新。

这不能解决ID中没有智能的问题。DevXPress可以将ID重新分配给另一个对象,这样我们将处于混乱状态。我们需要开发人员在Id或其他参数中强制一些逻辑名称或后缀,然后我们可以指向它们。因此,即使是模式也不是唯一的。如果可以添加数据属性:

watir webdriver

可以通过:browser.p:data\u type=>ruby-library访问。该模式是唯一的,但没有智能。如果在该链接所属的菜单中添加了另一项,则我们无法确信该ID不会更改。如果是这样的话,只需要一个冗长的搜索就能告诉我们新的身份证。身份证应该告诉任何看它的人他们在识别什么,或者它们的用途有限。嘿,我想我忽略了最明显的选择。您的文本将保持不变:browser.linktext:“摘要页”好的,对于链接示例,我们可以这样做。但对于所有其他对象类型,我们没有该选项。因此无法识别文本框。我刚刚从DevExpress获得回复:Paul DevExpress Support 4分钟前您好,我们在发布之前彻底测试了我们的组件,控件的设计并不意味着我们的用户进行测试。我们不支持任何第三方测试工具,也不打算在不久的将来支持它们,因为它需要完全重新设计控制。还有人认为这有问题吗?呃,录制/播放测试是一种可怕的方法。听起来watir和text以及regex使用兄弟和父方法是最好的选择,尽管这远远不够理想。