Selenium javascript webdriver可以访问javascript全局变量吗?

时间:2017-01-15 12:01:31

标签: javascript selenium selenium-webdriver

我正在尝试使用带有javascript的webdriver访问全局变量。

我的代码:

this.Then(/^I read global var$/, function (selectedElement) {
    readGlobalVar(window.location.href);
});

function readGlobalVar(varName){
return varName;
}

错误:     ReferenceError:窗口未定义

2 个答案:

答案 0 :(得分:1)

代码在节点上而不是在浏览器中运行,所以当您将window.location.href传递到readGlobalVar函数时,它会失败,因为window未定义。

如果你需要的是等到网址与某个值匹配,你应该考虑https://msdn.microsoft.com/library/y7e4769a(v=vs.110).aspx

答案 1 :(得分:0)

假设您正在使用this module ...

Node的JS执行环境和您使用Selenium控制的浏览器的JS执行环境不同。它们之间不共享变量。您可以通过webdriver传递消息来进行通信。

为了从当前加载的页面中读取变量,您需要使用execute method将一些JS传递到页面中。

browser.execute(function () {
    return window.location.href;
}).then(function (result) {
    console.log(result.value);
});