【问题标题】:Parsing URL for querystring values with Selenium IDE使用 Selenium IDE 解析查询字符串值的 URL
【发布时间】:2010-11-25 10:33:17
【问题描述】:

我是集成测试的新手,但到目前为止,我在使用 Se:IDE 构建了一套测试方面取得了巨大成功。在我运行测试时,我突然想到我正在生成大量数据,我想自己清理一下。

我的大部分测试都涉及创建一个新的“页面”,并且 id 在查询字符串中可用。我想让 Se:IDE 存储一个查询字符串值并将其传递到另一个页面,该页面调用删除方法在我运行验证后进行整理。

我看到我可以使用命令 storeLocation,但我不确定如何解析查询字符串中 id 的值,然后使用 Open 将其传递到另一个页面。

我是否已经到了需要将测试迁移到 c# 的地步,或者这是否可以使用 IDE?

【问题讨论】:

    标签: selenium integration-testing


    【解决方案1】:

    如果您将所有测试用例保存在同一个测试套件中。他们可以毫无问题地在执行之间共享变量。 因此,您所要做的就是存储所需的值:

    storeLocation | variable | |
    

    在以后的测试中,您必须使用以下变量:

    open | ${variable} | |
    

    注意:有关测试套件的更多信息,请查看: http://seleniumhq.org/docs/03_selenium_ide.html#writing-a-test-suite

    更新:

    您现在可以使用 javascript 正则表达式从变量中获取子字符串:

    storeEval | reg = /substring pattern/;reg.exec(${variable}) | substring
    open | ${substring} | |
    

    示例

    store | "012la4la" | a
    storeEval | re = /[0-3]*la/;re.exec(${a}) | new
    echo | ${new} | 
    

    输出

    [info] echo: 012la 
    

    【讨论】:

    • 虽然这很容易知道,但我仍然有解析存储在 ${variable} 中的 URL 以获取查询字符串值的问题。要么我需要一个可以返回查询字符串值的方法,要么需要某种方法来使用正则表达式解析 ${variable}。
    • 更新了帖子,以防您需要使用正则表达式对其进行解析
    • Santi 的正则表达式解决方案比我的要优雅一些。干杯桑蒂。
    • 我不得不在目标表达式中引用变量以避免异常:reg = /substring pattern/;reg.exec('${variable}')
    【解决方案2】:

    我在工作中遇到了类似的问题,这个问答博客帮了我很多忙。就我而言,我必须从 aspx URL 中删除查询字符串参数,并验证它们的存在。

    我使用 2 阶段过滤器方法进行验证 (1) storeLocation、storeEval和verifyExpression。 (2) verifyHTMLsource 并通配字符串

    <tr>
        <td>verifyLocation</td>
        <td>http://qa.clockstock.com/confirmation.aspx?exrc=90210&amp;csrc=</td>
        <td></td>
    </tr>
    <tr>
        <td>storeLocation</td>
        <td>urlconf</td>
        <td></td>
    </tr>
    <tr>
        <td>echo</td>
        <td>${urlconf}</td>
        <td></td>
    </tr>
    <tr>
        <td>storeEval</td>
        <td>storedVars['urlconf'].indexOf('exrc=90210');</td>
        <td>exrcurlconf</td>
    </tr>
    <tr>
        <td>verifyExpression</td>
        <td>javascript{(storedVars['CIDurlconf']&gt;0)}</td>
        <td>true</td>
    </tr>
    <tr>
        <td>storeEval</td>
        <td>storedVars['urlconf'].indexOf('csrc=');</td>
        <td>CSRCurlconf</td>
    </tr>
    <tr>
        <td>verifyExpression</td>
        <td>javascript{(storedVars['CSRCurlconf']&gt;0)}</td>
        <td>true</td>
    </tr>
    <tr>
        <td>verifyHtmlSource</td>
        <td>glob:*confirmation.aspx*exrc=90210*csrc=*</td>
        <td></td>
    </tr>
    

    【讨论】:

      【解决方案3】:

      从查询字符串中提取 id 参数的简单示例如下:

      storeLocation | myLocation
      store | javascript{ storedVars['myLocation'].substring(storedVars['myLocation'].indexOf('id=')+3, storedVars['myLocation'].length); } | idValue
      

      这假定 id 参数是查询字符串中的最后一个。如果不是,那么您最好将位置拆分为 '&' 并遍历结果数组以获取 'id' 参数值。

      【讨论】:

      • 我是否从值文本框运行 javascript?
      • 啊,想通了,我需要使用 storeEval 对存储的变量运行 javascript。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-24
      • 1970-01-01
      • 2011-09-12
      • 2019-05-03
      相关资源
      最近更新 更多