Knockoutjs and Selenium testing



看看Knockout的例子,实际上不需要向HTML元素添加ID。创建一个没有ID的大表单似乎可以使维护变得容易。

不过,这给Selenium HQ带来了问题。没有办法唯一地识别表单上的元素。

有哪些选择?Selenium是否有其他方法来选择Knockout创建的元素?还是必须为元素分配ID?

我已经复习了其他敲除和硒的问题。当它们启动时,所有这些都为HTML元素定义了ID。

谢谢Abhi

简短回答:将ID添加到HTML元素

尽管您确实需要这些属性才能使您的网站正常运行,但您将使测试人员的生活更加轻松。

我在一个项目中遇到了完全相同的问题。NET MVC 4应用程序,该应用程序广泛使用Knockout.js和Selenium。对于表单元素,我依赖ASP。NET MVC实用程序方法结合数据绑定表达式生成输出HTML。ASP。NET MVC基于支持模型自动生成唯一的NAME和ID属性。

然而,在所有其他必须呈现表、显示表单或对话框的情况下,我最终向这些HTML元素添加了ID属性。如果你仔细想想,这是你的需求的一个合乎逻辑的结果。Knockout非常棒,因为您不再需要ID和NAME来将布局(HTML)和行为(JS)连接在一起。然而,其他框架,如Selenium,需要存在这些ID。

是的,您可以使用复杂而臃肿的XPATH表达式来绕过它。但是这将大大降低测试的可维护性。根据我的经验,将ID添加到数百个HTML元素只需不到一天的时间,并且大大提高了测试人员的生产力。

记住,用尽可能少的HTML开发功能性网站可能是件好事。但如果这让你的网站变得不稳定,你会得不偿失。可测试性是非功能性要求,但这并不意味着它不重要!

您应该将Id添加到html元素中您的应用程序将变得更加复杂,可能需要将多个视图模型绑定到同一页面上的不同部分,您需要Id。例如,在ASP.NET MVC中,您希望构建一个partial view来显示您订购的所有产品,并且您希望在整个订购过程中共享此部分视图,您希望绑定到此特定的部分视图部分

最新更新