RobotFramework - 执行 Javascript

Posted

技术标签:

【中文标题】RobotFramework - 执行 Javascript【英文标题】:RobotFramework - Execute Javascript 【发布时间】:2021-12-08 05:59:59 【问题描述】:

我正在尝试向我的浏览器注入 javascript Executor 函数,以返回到正在运行的浏览器实例。为此,我使用关键字“Exectute JavaScript” 我的代码如下所示:

SeleniumLibrary.Execute Javascript           JavascriptExecutor js = (JavascriptExecutor) driver; js.executeScript("alert('OK')")

错误如下:

JavascriptException: Message: javascript error: Unexpected identifier

(会话信息:chrome=92.0.4515.107)

看起来像是 JavaScriptExecutor 的导入?如何做到这一点?

【问题讨论】:

【参考方案1】:

你可以试试下面的代码

SeleniumLibrary.Execute Javascript   alert('OK')

【讨论】:

非常感谢!现在警报显示,但我的代码没有继续,之后它没有点击元素,我应该先以某种方式处理警报吗? 好的,我使用关键字“Handle Alert”进行了处理,但这仍然无法让我回到正在运行的浏览器实例:(。【参考方案2】:

应该使用Handle Alert 关键字处理警报,就像您似乎已经完成的那样。为了返回到早期的浏览器实例,Selenium 提供了两个可以使用的实体。您可能想查看 SeleniumLibrary 文档的 Browsers and Windows 部分。

基本用例是,当打开浏览器时,您会给它一个别名,然后使用Switch Browser 回到那个浏览器实例。在该浏览器中,您可能打开了多个页面,可以使用普通定位器通过使用Switch Windowkeyword 访问它们。例如,我通常会使用窗口 URL,因为它往往至少有一些独特的部分。如果 URL、标题或名称都不是唯一的,则使用关键字 Get Window Handles 返回该浏览器中的窗口列表。在您的情况下,预计在测试期间不会打开其他窗口,可以使用参数 MAIN 找到主浏览器窗口。

您可以考虑这个不完整的示例,并填写您在问题中没有提供的细节。

Test 1
    Open Browser    $your URL    alias=browser1
    # Do whatever triggers the alert
    Handle Alert
    Switch Window    MAIN

【讨论】:

以上是关于RobotFramework - 执行 Javascript的主要内容,如果未能解决你的问题,请参考以下文章

RobotFramework二次开发——实时日志

如何使用 Robotframework 执行 sudo 命令?

使用pabot并发执行robotframework测试

robotframework怎样设置脚本运行的次数

robot framework怎么设置变量引用变量

robotframework列表长度限制