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代码移动到下一个。
答案 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);
}
};