代码之家  ›  专栏  ›  技术社区  ›  modnarrandom

Selenium IDE语法有助于断言CSS或DIV元素中的部分文本

  •  1
  • modnarrandom  · 技术社区  · 6 年前

    我尝试在CSS链接上断言文本,至少我认为它是CSS。 当我单击在页面中查找元素时,这是元素:css=慈善选项卡链接>a>div.rotation-span.result-flags。

    当我给出一个慈善捐赠的价值时,它失败了,这是因为元素中有其他文本与之一起动态生成。 错误消息:实际值“慈善捐赠16/19”与“精确:慈善捐赠”不匹配

    我只想包括慈善捐赠部分,因为价值可能会根据显示的页面而改变。

    我在目标字段中尝试了一些东西,比如Div.Rotation-Span.Result-Flags后面的[从(‘慈善捐赠’)开始],但我不知道将这些命令放在哪里,以断言文本的一部分。任何帮助都将不胜感激。

    <div class="col-md-3 ignore-print-always" style="">
        <ul class="nav nav-pills nav-stacked" id="profile-pills-tab" style="margin-left: 0px; 
        opacity: 1; max-width: inherit;">
        <li class="ui-state-default nav-link in active" id="detailed-tab-link" role="tab">
        <a data-toggle="tab" href="#detailed-tab">
            <div class="menu-icon">
            <i class="fa fa-address-card"></i> 
            </div>
            <div class="rotational-span result-flags">
    
            Profile Summary                
            </div>
                        <button type="button" class="close menu-item-remove" aria-label="Close">
                    <span aria-hidden="true">×</span>
                </button>
    
            </a>
    
        <div class="list-overlay" style="display: none;"><i class="fa fa-spin fa-spinner">
        </i></div></li>
    
    <li class="ui-state-default nav-link in" id="charitable-tab-link" role="tab">
        <a data-toggle="tab" href="#charitable-tab">
            <div class="menu-icon">
            <i class="fas fa-hand-holding-heart"></i> 
            </div>
            <div class="rotational-span result-flags">
    
            Charitable Giving
    
    <div title="55 High Quality Results / 55 Total Results" 
        class="menu-item-totals result-flag result-flag-hq">16 / 19
    </div>
        <input id="charitableHQ" value="16" type="hidden">
        <input id="charitableTotal" value="19" type="hidden">                
            </div>
    

    在文本文件中,这是命令

    "comment": "",
      "command": "assertText",
      "target": "css=#charitable-tab-link > a",
      "value": "*Charitable Giving*"
    
    1 回复  |  直到 6 年前
        1
  •  1
  •   Nic Endo    6 年前

    当我给出一个慈善捐赠的价值时,它失败了,这是因为元素中有其他文本与之一起动态生成。

    因此,您需要做的是与断言文本进行部分匹配 这应该很容易,只需将文本与 >*慈善捐赠*(asterix)放在一起即可。如果它不起作用,那么它是您的 flavor of selenium ide 中的一个bug。它在kantu中工作正常 Selenium-ide :

    测试用例代码:

    。{
    “creationdate”:“2018-7-9”,
    “命令”:。[
    {
    “command”:“打开”,
    “target”:“https://www.seleniumhq.org/projects/ide/”,
    “value”:“”
    },请
    {
    “command”:“注释”,
    “target”:“完全匹配”,
    “value”:“”
    },请
    {
    “command”:“断言文本”,
    “target”:“//*[@id=\”mainContent\“]/table/tbody/tr/td[1]/ul/li[1]”,
    “value”:“轻松录制和播放”
    },请
    {
    “command”:“注释”,
    “target”:“部分匹配”,
    “value”:“”
    },请
    {
    “command”:“断言文本”,
    “target”:“//*[@id=\”mainContent\“]/table/tbody/tr/td[1]/ul/li[1]”,
    “value”:“*记录*”
    }
    ]
    }
    

    您可以将此JSON复制并粘贴到kantu的“源代码视图”选项卡中,然后运行它。

    所以你要做的是 partial matching with assertText .这应该很容易,只需将文本 *Charitable Giving* (紫苑)。如果它不起作用,那么它就是 flavor of Selenium IDE .在坎图,这是应该的。 selenium ide 以下内容:

    enter image description here

    测试用例代码:

    {
      "CreationDate": "2018-7-9",
      "Commands": [
        {
          "Command": "open",
          "Target": "https://www.seleniumhq.org/projects/ide/",
          "Value": ""
        },
        {
          "Command": "comment",
          "Target": "full match",
          "Value": ""
        },
        {
          "Command": "assertText",
          "Target": "//*[@id=\"mainContent\"]/table/tbody/tr/td[1]/ul/li[1]",
          "Value": "Easy record and playback"
        },
        {
          "Command": "comment",
          "Target": "partial match",
          "Value": ""
        },
        {
          "Command": "assertText",
          "Target": "//*[@id=\"mainContent\"]/table/tbody/tr/td[1]/ul/li[1]",
          "Value": "*record*"
        }
      ]
    }
    

    您可以将这个JSON复制并粘贴到kantu的源代码视图选项卡中,然后运行它。