如何搜索文本并填写/点击与Selenium的链接?

时间:2010-05-02 01:32:08

标签: firefox selenium

这是交易:

有没有办法搜索输入名称或类型女巫不精确并填写它?

例如,我想用我的电子邮件填写名称为email的任何输入,但我可能有一些名为email-123,emailemail,电子邮件等的输入...有没有办法做* email *?

如何点击链接验证链接上方或链接上方或关闭位置或课堂上的某些文本?

ps:我正在使用selenium ide和firefox

2 个答案:

答案 0 :(得分:2)

您可以使用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")

答案 1 :(得分:0)

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的链接。