使用Selenium在JavaScript变量更改时抓取它们
我知道我可以使用SeleniumJavaAPI获取JavaScript变量的值,如下所示使用Selenium在JavaScript变量更改时抓取它们,selenium,Selenium,我知道我可以使用SeleniumJavaAPI获取JavaScript变量的值,如下所示 JavascriptExecutor je = (JavascriptExecutor) driver; Long JSvar = (Long)je.executeScript("return variable"); var variable=1; /* some code */ variable=2; /* some code */ variable=3; 但是,在Selenium
JavascriptExecutor je = (JavascriptExecutor) driver;
Long JSvar = (Long)je.executeScript("return variable");
var variable=1;
/* some code */
variable=2;
/* some code */
variable=3;
但是,在Selenium中是否有一种方法可以在JS代码中更改变量时获取该变量的每个值。例如,如果我的JS代码如下所示
JavascriptExecutor je = (JavascriptExecutor) driver;
Long JSvar = (Long)je.executeScript("return variable");
var variable=1;
/* some code */
variable=2;
/* some code */
variable=3;
有没有办法获取这三个值(1,2,3)?类似于在JS代码上设置断点,但是以自动方式。
我在想,我可以将这些值存储在一个数组中,然后获取数组,但在Selenium中,有没有其他方法可以通过对JS代码的最小更改来处理这些值?您没有指定Selenium应该如何或何时检索这些值,但下面是一些JavaScript代码,至少可以使这些值可用:
(功能(窗口){
var值=[];
变量var;
Object.defineProperty(窗口“someVariable”{
get:function(){
返回某个变量;
},
设置:函数(值){
someVariable=值;
值。推送(值);
}
});
Object.defineProperty(窗口“someVariableValues”{
get:function(){
返回值;
}
});
})(本条);
无论JavaScript代码是执行window.someVariable=X
还是简单地执行someVariable=X
,setter都会将该值推送到数组中。Selenium(或JavaScript)可以访问窗口。someVariableValues
以返回该变量的历史值和当前值
使用Selenium检索此文件可能是:
JavascriptExecutor je=(JavascriptExecutor)驱动程序;
//获取变量的当前值
Long JSvar=(Long)je.executeScript(“returnsomevariable”);
//获取分配给变量的所有值(这部分我不是100%确定)
Long[]historicalValues=(Long[])je.executeScript(“返回一些可变值”);
这个变量在JavaScript中是全局变量吗?我想这可能是可以回答的,但有一件事我正在努力解决。Selenium应该在什么时候上场?您是希望定期查询这些值,还是希望每次设置变量时都进行实时更新?我需要在代码中的特定部分捕获该变量,例如在第一个/*部分代码*/块(变量=2)后的赋值处捕获该变量