【问题标题】:How can I search for a text and fill/click on a link with Selenium?如何搜索文本并使用 Selenium 填充/单击链接?
【发布时间】:2011-02-14 16:21:00
【问题描述】:

这是交易:

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

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

我怎样才能点击一个链接来验证可能在链接上、链接上方、关闭或在课堂上等的一些文本?

ps:我正在使用 selenium ide 和 firefox

【问题讨论】:

    标签: firefox selenium


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-05-27
        • 2021-09-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-04-06
        • 1970-01-01
        相关资源
        最近更新 更多