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

标签 javascript selenium

我四处寻找这个问题的答案,发现了很多很多 更复杂的问题,但没有一个能让我有足够的洞察力 解决这个问题。
我在做什么:
1- 打开一个数字可能会很大的页面
2- 获取该数字所在的 X 路径并将其存储到变量
3- 做一个 javascript 比较上面存储的变量,看它是否大于 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>

我只是想到了一个可能的解决方法:展开 javascript 代码以获取那里的值并将其分配给那里的一个变量,这样我就更有可能在 javascript 中使用该变量。不确定具体如何完成 - 有人想帮忙吗?

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

最佳答案

找到解决方案。我不仅在设置 isMoreThan10 的方式上做错了 storeEval;我用错误的存储调用(而不是 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 中进行三元赋值

关于javascript - Selenium:如何在 javascript 比较中使用存储值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2105001/

相关文章:

java - GWT id 元素在 selenium 中每次都在变化

java - 有没有办法将wireshark http跟踪导入到java中?

javascript - 强制使用 js 或 axios 使用不同的用户代理

具有轻量级标记的 Javascript API 文档框架

javascript - 禁用父级单击但保持子级单击事件处于事件状态

python - 等到 CSS 类可用并在 Python 中提取文本的 Selenium 代码

java - 有没有办法停止排队的 JUnit 测试并仍然保持 JavaFX Gui 运行?

excel - 从下拉列表中选择后出现意外的 Selenium 行为

javascript - 在 Swiper JS 中放大鼠标悬停

javascript - 如何构建自定义 jquery ui 文件