是否仍然可以使用 Selenium IDE 访问 javascript 变量?
Is it still possible to access javascript variables with Selenium IDE?
我正在使用 chrome 的 selenium IDE 扩展进行测试,我遇到的问题与这个问题基本相同 Access JavaScript variables with Selenium IDE
使用 this.browserbot.getUserWindow()
根本无法获取我定义的变量,因为我提到的问题已有 8 年历史,我想知道是否没有遗漏一些更新。
我也查看了最近的文档https://www.selenium.dev/selenium-ide/docs/en/api/commands,但我找不到他们在问题中提到的 assertEval 命令。
我想知道 运行 脚本命令是否用于该目的。
总结一下:
- 假设我像这样在
window
变量中定义了一个数组 window.data=['hello', 'world']
在我的测试期间获取它的正确语法是什么?
- 这两个命令有什么区别?
execute script
和 run script
- 有没有更详细的关于如何与js相处的文档?我找不到
this.browserbot
变量的来源。
我会尝试在这方面提供帮助,因为我在 IDE 中使用过数组。数组创建是在 JS 中完成的,但是它在 JS 和 Selenium 中的存储方式不同,然后在其上进行操作。要回答第 2 点,执行脚本是我一直调用的 JS,然后在 IDE 框架中完成它,例如可以将其存储在 Selenium 中。 运行 脚本仅在 JS 中执行,不会 return 带有 IDE 的日志。回答第 1 点和整个问题:
方法一
要创建 Selenium IDE 数组,请使用 JS 执行脚本命令,这将启用仅存储为 Selenium IDE 变量,这是其基本版本:
Command: execute script
Target: return ["hello","world"]
Value: myArray
要检查这一点,添加第二个命令来检查 Selenium 变量是否正确存储并在 IDE 日志中显示正确的结果:
Command: echo
Target: ${myArray}
方法二
如果你已经在 JS 中定义了一个数组,例如让 myJSArray = ["hello", "world"] 或 window.myJSArray = ["hello", "world"] 并且它定义在 Selenium 已经打开的 window 中,然后你可以存储它在硒中使用:
Command: execute script
Target: return myJSArray | Target: return window.myJSArray
Value: myArray
然后使用上面相同的 echo 命令仔细检查它是否有效
方法三
如果你还没有打开 window 并且你想在 JS 和 Selenium 中存储变量,那么
Command: execute script
Target: return myJSArray = ["hello","world"] | Target: return window.myJSArray = ["hello","world"]
Value: myArray
然后再次使用 echo 命令检查它是否有效。
总结 - 方法1只将数组存储在Selenium中(使用JS实现),方法2将一个已经存储的JS变量存储在window打开的Selenium中,方法3将变量存储在 JS window 和 Selenium.
中
根据使用的方法,您可以对变量(JS 或 Selenium)进行断言,甚至可以在 If/Else、循环或一般 JS 函数中使用它们。如果您将 Selenium 变量用于 if/else 等的任何 JS 脚本,则需要向其添加 ${},如果使用 JS 变量则可以在没有美元的情况下调用它。对 Selenium myArray 变量或 JS myJSArray 变量使用方法 3 的断言示例:
Command: execute script
Target: return myJSArray = ["hello","world"]
Value: myArray
//Now have 2 variables, 1. myJSArray that the browser can use; and 2. myArray that Selenium can use. Below to assert either variable contains the array item "world":
Command: execute script
Target: return ${myArray}.includes("world")
Value: myArrayIncludesWorld
Command: assert
Target: myArrayIncludesWorld
Value: true
Command: execute script
Target: return myJSArray.includes("world")
Value: myJSArrayIncludesWorld
Command: assert
Target: myJSArrayIncludesWorld
Value: true
我正在使用 chrome 的 selenium IDE 扩展进行测试,我遇到的问题与这个问题基本相同 Access JavaScript variables with Selenium IDE
使用 this.browserbot.getUserWindow()
根本无法获取我定义的变量,因为我提到的问题已有 8 年历史,我想知道是否没有遗漏一些更新。
我也查看了最近的文档https://www.selenium.dev/selenium-ide/docs/en/api/commands,但我找不到他们在问题中提到的 assertEval 命令。
我想知道 运行 脚本命令是否用于该目的。
总结一下:
- 假设我像这样在
window
变量中定义了一个数组window.data=['hello', 'world']
在我的测试期间获取它的正确语法是什么? - 这两个命令有什么区别?
execute script
和run script
- 有没有更详细的关于如何与js相处的文档?我找不到
this.browserbot
变量的来源。
我会尝试在这方面提供帮助,因为我在 IDE 中使用过数组。数组创建是在 JS 中完成的,但是它在 JS 和 Selenium 中的存储方式不同,然后在其上进行操作。要回答第 2 点,执行脚本是我一直调用的 JS,然后在 IDE 框架中完成它,例如可以将其存储在 Selenium 中。 运行 脚本仅在 JS 中执行,不会 return 带有 IDE 的日志。回答第 1 点和整个问题:
方法一
要创建 Selenium IDE 数组,请使用 JS 执行脚本命令,这将启用仅存储为 Selenium IDE 变量,这是其基本版本:
Command: execute script
Target: return ["hello","world"]
Value: myArray
要检查这一点,添加第二个命令来检查 Selenium 变量是否正确存储并在 IDE 日志中显示正确的结果:
Command: echo
Target: ${myArray}
方法二
如果你已经在 JS 中定义了一个数组,例如让 myJSArray = ["hello", "world"] 或 window.myJSArray = ["hello", "world"] 并且它定义在 Selenium 已经打开的 window 中,然后你可以存储它在硒中使用:
Command: execute script
Target: return myJSArray | Target: return window.myJSArray
Value: myArray
然后使用上面相同的 echo 命令仔细检查它是否有效
方法三
如果你还没有打开 window 并且你想在 JS 和 Selenium 中存储变量,那么
Command: execute script
Target: return myJSArray = ["hello","world"] | Target: return window.myJSArray = ["hello","world"]
Value: myArray
然后再次使用 echo 命令检查它是否有效。
总结 - 方法1只将数组存储在Selenium中(使用JS实现),方法2将一个已经存储的JS变量存储在window打开的Selenium中,方法3将变量存储在 JS window 和 Selenium.
中根据使用的方法,您可以对变量(JS 或 Selenium)进行断言,甚至可以在 If/Else、循环或一般 JS 函数中使用它们。如果您将 Selenium 变量用于 if/else 等的任何 JS 脚本,则需要向其添加 ${},如果使用 JS 变量则可以在没有美元的情况下调用它。对 Selenium myArray 变量或 JS myJSArray 变量使用方法 3 的断言示例:
Command: execute script
Target: return myJSArray = ["hello","world"]
Value: myArray
//Now have 2 variables, 1. myJSArray that the browser can use; and 2. myArray that Selenium can use. Below to assert either variable contains the array item "world":
Command: execute script
Target: return ${myArray}.includes("world")
Value: myArrayIncludesWorld
Command: assert
Target: myArrayIncludesWorld
Value: true
Command: execute script
Target: return myJSArray.includes("world")
Value: myJSArrayIncludesWorld
Command: assert
Target: myJSArrayIncludesWorld
Value: true