3

我正在使用 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

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

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

4

2 回答 2

0

请尝试使用

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

或者

_click(_span(0, _in(_link("addWidgetDone_Link"))));
于 2015-04-25T20:21:45.430 回答
0

如果找不到该元素,则名称不再正确,因为您的 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;
     }
}
于 2015-11-21T05:13:40.930 回答