Как использовать регулярное выражение в сценарии сахи?
Я использую Sahi для автоматизации сайта, когда я записываю действия с устройства записи Sahi, то он записывает действие кнопки (фактически "span") как _click(_span("Done[4]"));
но когда я играю записанный сценарий, он потерпел неудачу в этой строке, так как не нашел "Done[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]" числовая часть меняется каждый раз.
2 ответа
Пожалуйста, попробуйте использовать
_click(_span(Done[0], _in(_link("addWidgetDone_Link"))));
ИЛИ ЖЕ
_click(_span(0, _in(_link("addWidgetDone_Link"))));
Если элемент не был найден, либо имя больше не является правильным, из-за изменения структуры в вашем 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;
}
}