c# – 使用Selenium更改eBay页面内容/ DOM的最简单方法
Selenium显然不是为了允许你修改浏览器页面的DOM而设计的,但我偶尔需要动态插入
HTML元素.
在这个例子中:我使用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); }; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |