微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

我一直在寻找答案,发现了很多
更复杂的问题,但没有一个给我足够的洞察力
想出这一个.
我在做什么:
1-打开一个可能很大的数字页面
2-获取该数字所在的X路径并将其存储到变量中
3-做一个javascript来比较上面存储的变量,看它是否大于10,如果是这样,将一个新变量设置为true;否则为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>

我只想到了一个可能的解决方法:扩展javascript代码获取其中的值&将它分配给变量,这样我就更有可能在javascript中使用该变量.不知道到底怎么做 – 有人想帮忙吗?

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

解决方法:

找到了解决方案.我不仅以我设置的方式错误地将storeEval设置为isMoreThan10;我在错误的商店调用(而不是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>

感谢AutomatedTester建议在storeEval中进行三元分配

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐