【发布时间】:2011-02-14 16:21:00
【问题描述】:
这是交易:
有没有办法搜索输入的名称或类型女巫不精确并填写?
例如,我想用我的电子邮件填写名称 email 的任何输入,但我可能有一些名为 email-123、emailemail、电子邮件等的输入...有没有办法做类似 * email * 的事情?
我怎样才能点击一个链接来验证可能在链接上、链接上方、关闭或在课堂上等的一些文本?
ps:我正在使用 selenium ide 和 firefox
【问题讨论】:
这是交易:
有没有办法搜索输入的名称或类型女巫不精确并填写?
例如,我想用我的电子邮件填写名称 email 的任何输入,但我可能有一些名为 email-123、emailemail、电子邮件等的输入...有没有办法做类似 * email * 的事情?
我怎样才能点击一个链接来验证可能在链接上、链接上方、关闭或在课堂上等的一些文本?
ps:我正在使用 selenium ide 和 firefox
【问题讨论】:
您可以使用 Xpath 找到它,例如 //input[contains(@name,'email')。如果您在页面上有多个这样的实例,则值得将您的测试转移到您最喜欢的编程语言,然后再做
emailInstances = sel.get_xpath_count("//input[contains(@name,'email')]")
for i in range(int(emailInstances)):
sel.type("//input[contains(@name,'email')]["+ i + 1 +"]","email@address.tld")
【讨论】:
Xpath 运行良好,上面的解决方案也不错。如果您尝试测试旧版本的 IE,您也可以使用 JavaScript 注入。我发现它非常快,虽然调试起来有点棘手。我实际上并没有检查以下内容是否有效,但希望它能让您了解您可以做什么:
String javaScript = "_sl_enterEmailStr = function(parentObj,str) { "+
" var allTags = parentObj.getElementsByTagName('input'); "+
" for (var i = 0; i < allTags.length; ++i) { "+
" var tag = allTags[i]; "+
" if (tag.name && tag.type && tag.type === 'text' "+
" && tag.name.match(/email/)) { "+
" tag.value = str; "+
" } "+
" } "+
"}; "+
"_sl_enterEmailStr(this.browserbot.getCurrentWindow().document "+
" ,'myemail@mydomain.org'); ";
mySelenium.getEval(javaScript);
我发现使用正则表达式的 JavaScript 注入可以让我对动态输入字段做一些很棒的事情。请注意,您可以使用 findElement() 来更具体地了解您在哪里查找标签。
关于点击链接和获取文本,这些是简单的 click() 和 getText() 操作,只要有适当的定位器就可以完成。我会查看 selenium API。例如,这里是Java one for 1.0b2 的链接。
【讨论】: