如果在Selenium Java中禁用第一个按钮,如何移动到下一个按钮?

时间:2016-07-21 04:45:46

标签: java selenium-webdriver

enter image description here我有5个带有文本“x”的按钮,下面的我的Selenium脚本只尝试访问第一个被禁用的按钮,然后转到另一行脚本编写来做其他事情。所有的x都有相同的ID和元素,所以我不能单独调用它们。

在继续执行其他任务之前,如何让我的Selenium Java检查所有5个按钮?

Selenium代码:

driver.findElement(By.cssSelector("a.aui-button.aui-button-link.aui-restfultable-delete.aui-restfultable-delete-small")).click();

HTML:

<a href="javascript:void(0);" class="aui-button aui-button-link aui-restfultable-delete aui-restfultable-delete-small" aria-disabled="true" original-title="Disabled because this request type is used for requests created from the email channel" resolved="">×</a>

您可以在随附的屏幕截图中看到一个示例。第一个x被禁用,我希望我的Selenium代码移动到下一个。

3 个答案:

答案 0 :(得分:0)

您可以在css选择器中使用:not([disabled])属性来获取所有未禁用的按钮。

为您的问题使用css选择器,

a.aui-button.aui-button-link.aui-restfultable-delete.aui-restfultable-delete-small:not([disabled])

答案 1 :(得分:0)

尝试使用以下代码:

// Selecting all the elements
List<WebElement> allele = driver.findElements(By.xpath(".//*[text()='x']"));

// Looping through the elements using for-each loop
for(WebElement eachEle : allele) {
    // Checking whether the element is enabled or not
    if(eachEle.isEnabled()) {
        eachEle.click();
    }
}

希望这有帮助。

答案 2 :(得分:0)

您可以尝试使用以下代码检查aria-disabled属性,并根据它点击元素:

#include <set>
#include <map>
#include <stack>
#include <queue>
#include <cmath>
#include <ctime>
#include <vector>
#include <cstdio>
#include <string>
#include <climits>
#include <cstdlib>
#include <cstring>
#include <iostream>
#include <algorithm>

using namespace std;

double xx, yy;

class BearNSWE
{
public:
    double totalDistance(vector <int> a, string dir)//no main function
  {
    int n = a.size();
    double ans = 0.0;
    xx = yy = 0.0;
    for (int i = 0; i < n; i++)
    {
      if (dir[i] == 'N')
      {
        yy = yy + a[i];
      }
      else if (dir[i] == 'S')
      {
        yy = yy - a[i];
      }
      else if (dir[i] == 'W')
      {
        xx = xx - a[i];
      }
      else if (dir[i] == 'E')
      {
        xx = xx + a[i];
      }
      ans = ans + a[i];
    }
    return ans + sqrt(xx*xx + yy*yy);
  }
};