Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Selenium在JavaScript变量更改时抓取它们_Selenium - Fatal编程技术网

使用Selenium在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

我知道我可以使用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中是否有一种方法可以在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)后的赋值处捕获该变量