Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.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比较中使用存储值_Javascript_Selenium - Fatal编程技术网

Selenium:如何在javascript比较中使用存储值

Selenium:如何在javascript比较中使用存储值,javascript,selenium,Javascript,Selenium,我到处寻找这个问题的答案,发现了很多 更复杂的问题,但没有一个能给我足够的洞察力 找出这个问题。 我在做什么: 1-打开一个数字可能很大的页面 2-获取该数字所在的X路径,并将其存储到变量中 3-使用javascript比较上述存储的变量是否大于10,如果大于10,则将新变量设置为true;else false(因为这是默认值) 4-验证#3中的变量为真 听起来很简单,不是吗 哪里出了问题: 在第3步中,不允许将第2步中的变量与第10步中的变量进行比较,至少不是我编写的方式 为什么? 详情: &

我到处寻找这个问题的答案,发现了很多 更复杂的问题,但没有一个能给我足够的洞察力 找出这个问题。
我在做什么:
1-打开一个数字可能很大的页面
2-获取该数字所在的X路径,并将其存储到变量中
3-使用javascript比较上述存储的变量是否大于10,如果大于10,则将新变量设置为true;else false(因为这是默认值)
4-验证#3中的变量为真

听起来很简单,不是吗

哪里出了问题:
在第3步中,不允许将第2步中的变量与第10步中的变量进行比较,至少不是我编写的方式

为什么?

详情:

<tr>
   <td>open</td>
   <td>http://www.google.com/search?hl=en&q=selenium+verifyEval</td>
   <td></td>
</tr>
<tr>
   <td>store</td>
   <td>/html/body/div[5]/div/p/b[3]</td>
   <td>resultCount</td>
</tr>
<tr>
   <td>storeEval</td>
   <td>var isMoreThan10 = new Boolean(); isMoreThan10 = (resultCount &gt; 10);</td>
   <td>isMoreThan10</td>
</tr>
<tr>
   <td>verifyExpression</td>
   <td>${isMoreThan10}</td>
   <td>true</td>
</tr>

打开
http://www.google.com/search?hl=en&q=selenium+验证评估
商店
/html/body/div[5]/div/p/b[3]
结果计数
仓库
var isMoreThan10=新布尔值();Ismorethan 10=(结果计数10);
超过10
验证表达式
${isMoreThan10}
真的
我刚刚想到了一个可能的解决方法:扩展javascript代码以获取那里的值并将其分配给那里的变量,这样我就更有可能在javascript中使用该变量。不知道该怎么做-有人想帮忙吗


但肯定有更好的办法,不是吗?我必须能够在Selenium中为变量赋值,然后在下一行中在javascript中使用该变量,对吗?

这是一个简单的问题

<tr>
   <td>storeEval</td>
   <td>var isMoreThan10 = new Boolean(); isMoreThan10 = (resultCount &gt; 10);isMoreThan10 ;</td>
   <td>isMoreThan10</td>
</tr>

仓库
var isMoreThan10=新布尔值();Ismorethan 10=(结果计数10);10岁以上;
超过10
它要求你在最后得到你想要的结果。如果您使用三元函数,它会更好,因为它不会将结果存储在您正在传递的javascript中的变量中

e、 g


仓库
(结果计数>10)?对:错
超过10

找到了解决方案。我不仅在商店评估中错误地设置了超过10个;我使用错误的存储调用(而不是storeText)将resultCount设置为错误,并在storeEval中调用resultCount

以下是正确的方法:

<tr>
<td>open</td>
<td>http://www.google.com/search?hl=en&amp;q=selenium+verifyEval</td>
<td></td>
</tr>
<tr>
<td>storeText</td>
<td>//p[@id='resultStats']/b[3]</td>
<td>resultCount</td>
</tr>
<tr>
<td>storeEval</td>
<td>(storedVars['resultCount'] &gt; 10) ? true : false</td>
<td>isMoreThan10</td>
</tr>
<tr>
<td>verifyExpression</td>
<td>${isMoreThan10}</td>
<td>true</td>
</tr>

打开
http://www.google.com/search?hl=en&q=硒+验证评估
storeText
//p[@id='resultStats']/b[3]
结果计数
仓库
(storedVars['resultCount']10)?对:错
超过10
验证表达式
${isMoreThan10}
真的

感谢AutomatedTester在storeEval中建议三元赋值

这种类型的东西确实在使用(它可以将Selenium和HTMLUnit作为后端运行)


你在我的代码中尝试过你的解决方案吗?这对我不起作用,但我想我离解决方案越来越近了。由于上面提到的相同原因,它在第3步仍然失败,但是我可能已经找到了一种方法,使用另一种方法来存储和调用变量,我将马上演示。谢谢你的提示!抱歉,我没有看到resultCode是一个变量。
<tr>
<td>open</td>
<td>http://www.google.com/search?hl=en&amp;q=selenium+verifyEval</td>
<td></td>
</tr>
<tr>
<td>storeText</td>
<td>//p[@id='resultStats']/b[3]</td>
<td>resultCount</td>
</tr>
<tr>
<td>storeEval</td>
<td>(storedVars['resultCount'] &gt; 10) ? true : false</td>
<td>isMoreThan10</td>
</tr>
<tr>
<td>verifyExpression</td>
<td>${isMoreThan10}</td>
<td>true</td>
</tr>
GotoURL http://www.google.com/search?hl=en&q=selenium+verifyEval
set %Count% (response //html/body/div[5]/div/p/b[3])
Notice Got Value %Count%
Checkpoint numComp %Count% > 10