当前位置: 首页 > 面试题库 >

加载一个包含有用的selenium测试功能的外部js文件

谷出野
2023-03-14
问题内容

selenium中的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来完成此工作。但是我不想重新发明轮子,而且我以前从未构建过插件。


问题答案:

runScript命令仅将<SCRIPT>包含脚本的元素添加到DOM,然后让浏览器运行它。您可以自己执行相同操作,而不是使用内联脚本,而可以使用SRC=属性告诉浏览器加载哪个文件。您可能必须从Web服务器加载文件,因为某些浏览器不允许从网络加载的页面访问file:URL。



 类似资料:
  • 问题内容: 到处寻找它,找到答案却迷失了。有谁知道如何从另一个js文件加载外部.js文件? innerHTML可以工作,并且可以粘贴响应文本。问题在于JS无法在该文档中工作。jQuery.getScript应该正在加载该外部js文件,但不会加载 问题答案: 这是您将外部js文件加载到Jquery的方法

  • 本文向大家介绍JS加载器如何动态加载外部js文件,包括了JS加载器如何动态加载外部js文件的使用技巧和注意事项,需要的朋友参考一下 今天在网上找到了一个可以动态加载js文件的js加载器,具体代码如下: JsLoader.js JsLoader.js测试 测试结果如下:

  • 本文向大家介绍如何调试异步加载页面里包含的js文件,包括了如何调试异步加载页面里包含的js文件的使用技巧和注意事项,需要的朋友参考一下 最近在一个新的web项目中开发功能。这个项目的管理界面有一个特点,框架是固定的,不会刷新,每次点新的页面仅仅刷新一个div。div里面不是套的iframe,于是导致了一个问题,用浏览器无法调试异步加载页面里包含的js文件。简单的说就是在调试工具里面看不到异步加载页

  • 问题内容: 问题: 是否可以告诉受selenium webdriver控制的浏览器不加载来自外部资源的任何内容,或者不加载来自给定域列表的资源? 背景: 我有一个网页,我可以使用Selenium Webdriver针对该网页编写基于Java的测试脚本- 我无法更改页面,我只需要编写测试即可。网站从其他域加载的某些外部内容存在问题。外部的东西是我的测试实际上不需要的一些javascript代码,但是

  • 问题是: 是否可以告知由selenium webdriver控制的浏览器不从外部源加载任何内容,或者不从给定的域列表加载资源? 背景: 我有一个网页,我用SeleniumWebDriver编写了一个基于java的测试脚本——我不能更改页面,我只需要编写测试。网站从其他域加载的某些外部内容存在问题。外部的东西是一些javascript代码,我的测试实际上不需要这些代码,但是相关页面包含这些代码。现在

  • 使用geckodriver和Firefox的无头和无头(有头??)版本 将chromedriver与Chrome的无头和无头版本一起使用 检查了pip3和Selenium是否都是最新的稳定版本 使用用户代理配置文件打开Chrome 使用随机用户代理配置文件(来自random_user_agent库)打开Chrome 硬编码最多等待30秒(time.sleep) 在请求中加载页面(事后看来,如果我在