我一直在寻找答案,发现了很多
更复杂的问题,但没有一个给我足够的洞察力
想出这一个.
我在做什么:
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 > 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&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'] > 10) ? true : false</td>
<td>isMoreThan10</td>
</tr>
<tr>
<td>verifyExpression</td>
<td>${isMoreThan10}</td>
<td>true</td>
</tr>
感谢AutomatedTester建议在storeEval中进行三元分配
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。