在这个例子中:我使用Firefox和Selenium IDE来记录eBay上的拍卖列表,但我注意到它无法处理大量的JScripted拍卖内容控件并且没有为这些元素记录任何内容.
如果我关闭ebay网站的JavaScript,第一个拍卖条目页面的简单版本就会被打破(它缺少确认PayPal作为付款选项所需的隐藏输入元素).
所以,我目前的选择是…… a)弄清楚如何与Selenium的花哨JScript HTML编辑器控件进行交互,或b)将新元素插入DOM.
有没有人有任何建议,最好是在C#,因为我在Windows控制台应用程序下自动执行此操作?如果有人拥有代码,也可以接受Selenium User-Extensions.
解决方法
Selenium允许你到extend its behavior with a user-extensions.js file.
例如,这会在Selenium中创建一个新的insertHtml命令:
Selenium.prototype.doInsertHtml = function(locator,text){ var element = this.page().findElement(locator); var innerHTML = text + element.innerHTML; element.innerHTML = innerHTML; }
对于Selenium IDE使用,您只需通过IDE本身的选项菜单包含扩展文件.下次启动IDE时,它会自动提供任何新命令(来自用户扩展文件).
随着文档页面地址的更改,我可能会再次复制以下相关部分:
扩展硒
扩展Selenium,添加自己的动作,断言和定位策略可以非常简单.这是通过向Selenium对象原型和PageBot对象原型添加方法使用javascript完成的.在启动时,Selenium将自动查看这些原型上的方法,使用名称模式识别哪些是动作,断言和定位器.
以下示例尝试说明如何使用javascript扩展Selenium.
操作
Selenium原型上的所有doFoo方法都被添加为动作.对于每个动作foo,还有一个动作fooAndWait已注册.动作方法最多可以使用2个参数,这些参数将在测试中传递第二和第三列值.
示例:向Selenium添加“typeRepeated”操作,该操作将文本两次键入文本框.
Selenium.prototype.doTypeRepeated = function(locator,text) { // All locator-strategies are automatically handled by "findElement" var element = this.page().findElement(locator); // Create the text to type var valuetoType = text + text; // Replace the element text with the new text this.page().replaceText(element,valuetoType); };
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。