我是JS的新手,面临着一个我找不到解决方案的问题.我正在编写一个脚本,以使用空手道/selenium自动执行"清理"过程.

脚本:

  1. 转到网页并搜索特定条件.
  2. 在填充的结果上,获取单个列中的所有值.然后在同一搜索框中,搜索从列中获取的每个值.
  3. 在结果中,单击Delete以获得填充的结果.
  4. 某些行将引发异常,在这种情况下,我们希望返回并try 列值数组中的下一项,直到所有项都被删除,或者剩下的项都是引发异常的项.

到目前为止,我有:

driver.input('#searchField', ['Mobile', Key.ENTER], 200); //here I am using Karate/Selenium to enter the search criteria on the UI. 
function() {
  var searchResult = false;
  searchResult = driver.exists('//table//tr');
  var errorPage = driver.exists('#exception');

  do {
    var deleteCriteria = driver.scriptAll('//table//tr//td[3]', '_.innerText'); //Here I am grabbing actual values I need to search by across the entire column and putting it in array form.
    for (i = 0; i < deleteCriteria.length; i++) {
      driver.input('#searchField', [deleteCriteria[i], Key.ENTER], 200);
      driver.click('#deleteBtn');
      driver.click('#deleteNumber');
      driver.delay(10000);
      if (errorPage) {
        driver.back();
        driver.delay(10000);
        driver.back();
        driver.delay(10000);
      } else {
        continue;
      }
    }
  } while (searchResult);
}

问题:当显示异常页面时,IF块未启动.脚本无法try 找到要再次搜索的搜索框.请告知.

PS-我理解我的"while"还不正确.一旦问题解决了,我就把它修好.

推荐答案

代码var errorPage = driver.exists('#exception');运行一次,并及时存储当时的状态.

如果您想知道它在当前时刻是否存在,您需要再次查找它.

if (driver.exists('#exception')) {
  ...
}

Javascript相关问答推荐

分层树视图

Angular 订阅部分相互依赖并返回数组多个异步Http调用

提交链接到AJAX数据结果的表单

将内容大小设置为剩余可用空间,但如果需要,可在div上显示滚动条

如何发送从REST Api收到的PNG数据响应

为什么我的自定义元素没有被垃圾回收?

当我在Reaction中创建一个输入列表时,我的输入行为异常

Vaadin定制组件-保持对javascrip变量的访问

Phaser3 preFX addGlow不支持zoom

Chrome上的印度时区名S有问题吗?

需要刷新以查看Mern堆栈应用程序中的更改

如何用react组件替换dom元素?

在ReactJS上挂载组件时获得多个身份验证请求

如何在底部重叠多个div?

如何在Angular中运行没有哈希的项目

如何使用逗号JS从数组中输出数据列表?

是否可以在同一路由路径中为不同的处理程序使用不同的express中间件?

如何在Java脚本中 Select 该元素?-Chrome扩展

将对象值作为键并将键作为值的Typescript函数

无法将bson类型转换为日期MongoDB