Загрузите внешний файл js, содержащий полезные тестовые функции в селене - PullRequest
2 голосов
/ 06 октября 2011

Команда runScript в селене действительно полезна, и я использую ее для суммирования значений в таблице, а затем сохраняю значение следующим образом

<tr>
    <td>runScript</td>
    <td>var cumulative = 0.0; $('table.quote-review-group-component').eq(0).find('tr').each( function( i,el ){var singleStackTotal = $(el).find('td').eq(4).html();if( singleStackTotal ){cumulative += parseFloat( singleStackTotal.substring(1) );} }); cumulative = cumulative.toFixed(2)</td>
    <td></td>
</tr>
<tr>
    <td>storeEval</td>
    <td>selenium.browserbot.getUserWindow().cumulative</td>
    <td>cumulative</td>
</tr>
<tr>
    <td>echo</td>
    <td>${cumulative}</td>

    <td></td>
</tr>
<tr>
    <td>verifyEquals</td>
    <td>£${cumulative}</td>
    <td>${total}</td>
</tr>

В идеале я хотел бы иметь возможность указывать на внешний js-файл, а не иметь javascript в команде в виде строки, чтобы я мог загрузить некоторые тестовые функции и использовать storeEval для получения возврата функции

Так что у нас будет

<tr>
    <td>runExternalScript</td>
    <td>/path/to/external/extra-tests.js</td>
    <td></td>
</tr>
<tr>
    <td>storeEval</td>
    <td>selenium.browserbot.getUserWindow().getCumulative(0)</td>
    <td>cumulative0</td>
</tr>
<tr>
    <td>verifyEquals</td>
    <td>£${cumulative}</td>
    <td>${total}</td>
</tr>

И внешний скрипт будет выглядеть так

function checkSingleGroupListTotal( index ){
    if ( index == "undefined" ){
        index = 0;
    }
    var cumulative = 0.0; 
    $('table.quote-review-group-component').eq(index).find('tr').each( function( i,el ){
        var singleStackTotal = $(el).find('td').eq(4).html();    
        if( singleStackTotal ){         
            cumulative += parseFloat( singleStackTotal.substring(1) );     
        } 
    }); 
    return cumulative.toFixed(2);
}

Думая об этом, плагин, который добавляет действие loadScript, которое проверяет внешний файл js и затем передает содержимое файла в runScript, сделает эту работу. Но я не хочу изобретать велосипед, и я никогда не создавал плагин раньше.

1 Ответ

2 голосов
/ 08 октября 2011

Команда runScript просто добавляет элемент <SCRIPT>, содержащий скрипт, в DOM и позволяет браузеру запускать его. Вы можете сделать то же самое самостоятельно, и вместо встроенного скрипта используйте атрибут SRC=, чтобы сообщить браузеру, какой файл загрузить. Возможно, вам придется загрузить файл с веб-сервера, поскольку некоторые браузеры не позволяют странице, загруженной из сети, получать доступ к URL-адресу file:.

...