【问题标题】:How to use regular expression in sahi script?如何在 sahi 脚本中使用正则表达式?
【发布时间】:2018-06-22 19:46:57
【问题描述】:

我正在使用 sahi 来自动化网站,当我从 sahi 记录器记录操作时,它会将按钮的单击操作(实际上是“跨度”)记录为 _click(_span("Done[4]"));
但是当我播放录制的脚本时它在那条线上失败了,因为它没有找到“完成[4]”。
为了解决这个问题,我只是尝试使用正则表达式点击_span("Done[4]"),但没有运气。

HTML 源代码结构:(这会显示在弹出窗口中 [ui-dialog,ui-widget])

<div class="dashboardDlgButtonPanel">
<div id="addWidgetDone_wrapper" class="input_button  ">
    <div id="addWidgetDone" class="form_input_button">
        <div class="buttonwrapper">
            <a style="width: 49px; height: 41px; display: block;" id="addWidgetDone_Link" class="PrimaryButton" href="#" s1ignore="true" data-role="button" title="">
                <span>Done</span>
            </a>
        </div>
    </div>
</div>
<div id="addWidgetCancel_wrapper" class="input_button  tertiaryButton">
    <div id="addWidgetCancel">
        <div class="buttonwrapper">
            <a id="addWidgetCancel_Link" class="link" href="#" s1ignore="true" title="">Cancel</a>
        </div>
    </div>  
</div>
</div>

我一一尝试了以下:

_click(_span(/Done.*/));
_click(_span(/Done\\[[0-9]\\]/));
_click(_span(/Done\[[0-9]\]/));
_click(_span(/Done/i));
_click(_span("/Done/"));
_click(_span(new Reg Exp("Done\\[[0-9]\\]")));
_click(_span(/Done.*/,_near(_div("addWidgetDone_wrapper[1]"))));
_click(_span(/Done.*/,_near(_div(/addWidgetDone_wrapper\\[[0-9]\\]/))));
_click(_span(/Done.*/,_near(_div(/addWidgetDone_wrapper.*/))));
_click(_span(/Done.*/,_in(_div("addWidgetDone_wrapper[1]"))));
_click(_span(/Done.*/,_in(_div(/addWidgetDone_wrapper/))));
_click(_span(/Done.*/,_in(_div(/addWidgetDone_wrapper.*/))));

还有更多其他组合,但它们都不起作用。

参考链接:sahi-link-1, sahi-link-2

谁能告诉我我做错了什么?

注意:在录制的动作“Done[4]”中,数字部分每次都会改变。

【问题讨论】:

    标签: regex automation sahi jquery-ui-widget


    【解决方案1】:

    请尝试使用

    _click(_span(Done[0], _in(_link("addWidgetDone_Link"))));
    

    _click(_span(0, _in(_link("addWidgetDone_Link"))));
    

    【讨论】:

      【解决方案2】:

      如果找不到该元素,则名称不再正确,因为您的 DOM 中的结构发生了变化,或者该元素确实不是他们的,您应该先检查一下。

      尝试使用:

      //this means it will click the 5th "done"-span-element in your DOM structure
      _click(_span("/Done/[4]"));
      

      关于结构变化,试试看:

      for(var $i = 0; $i<99; $i++){
          var $I = JSON.stringify($i);
          if (_isVisible(_span("Done["+$I+"]"))){
              _click(_span("Done["+$I+"]"));
              break;
           }
      }
      

      【讨论】:

        猜你喜欢
        • 2010-09-23
        • 2016-06-25
        • 2019-11-16
        • 2010-12-10
        • 1970-01-01
        • 1970-01-01
        • 2011-04-12
        • 1970-01-01
        相关资源
        最近更新 更多