在 Selenium Webdriver 中从 Web table 场景中删除一条记录
Delete a record from web table scenario in Selenium Webdriver
我正在编写一个自动化脚本,我希望自动化的场景之一是从网格中删除一条记录,现在我正在做的是在网格中找到删除按钮列表的 xpath,然后我'我遇到 'if' 条件,我声明如果删除按钮显示在页面上,则删除第一条记录,否则 driver.close();但我猜 Selenium 没有检查条件,它直接向我显示 NoSuchElement 异常。有人可以建议我更好的方法或其他替代方案来自动化这种情况。我使用的代码:=
//resourceSchedulePage - Class object
//clickDeleteResourceScheduleDataBtn() - method that returns the WebElement
schedulerPage.clickResourceSchedule().click();
logger.info("Resource schedule link is clicked");
Thread.sleep(500);
if(resourceSchedulePage.clickDeleteResourceScheduleDataBtn().isDisplayed())
{
resourceSchedulePage.clickDeleteResourceScheduleDataBtn().click();
Thread.sleep(500);
}
else
{
driver.close();
}
实施:
@FindBy(xpath="//*[@id=\"gridResourceSchedule\"]//td[6]/a[2]")
WebElement deleteResourceScheduleBtn;
public WebElement clickDeleteResourceScheduleDataBtn() throws InterruptedException {
synchronized (driver) {
driver.wait(1000); }
return deleteResourceScheduleBtn; }
element.isDisplayed()
只能用于现有元素。它 returns false
仅当找到元素但未显示时 (hidden=true f.e)。
要检查元素是否存在,您可以使用 List<WebElement> elements = driver.findElements(...);
如果没有找到元素,您将得到空列表而不是 NoSuchElementException
。
正如@pburgr 所解释的,这里是 findElements
的实现
if (driver.findElements(By.xpath("Delete button xpath")).size() > 0 ) {
System.out.println("Delete button is avilable");
// you can click on delete here, or whatever you wanna do.
}
else {
System.out.println("Delete button isn't avilable");
driver.close();
}
还有一种方法可以处理这种情况,那就是 try catch
阻塞。
我正在编写一个自动化脚本,我希望自动化的场景之一是从网格中删除一条记录,现在我正在做的是在网格中找到删除按钮列表的 xpath,然后我'我遇到 'if' 条件,我声明如果删除按钮显示在页面上,则删除第一条记录,否则 driver.close();但我猜 Selenium 没有检查条件,它直接向我显示 NoSuchElement 异常。有人可以建议我更好的方法或其他替代方案来自动化这种情况。我使用的代码:=
//resourceSchedulePage - Class object
//clickDeleteResourceScheduleDataBtn() - method that returns the WebElement
schedulerPage.clickResourceSchedule().click();
logger.info("Resource schedule link is clicked");
Thread.sleep(500);
if(resourceSchedulePage.clickDeleteResourceScheduleDataBtn().isDisplayed())
{
resourceSchedulePage.clickDeleteResourceScheduleDataBtn().click();
Thread.sleep(500);
}
else
{
driver.close();
}
实施:
@FindBy(xpath="//*[@id=\"gridResourceSchedule\"]//td[6]/a[2]")
WebElement deleteResourceScheduleBtn;
public WebElement clickDeleteResourceScheduleDataBtn() throws InterruptedException {
synchronized (driver) {
driver.wait(1000); }
return deleteResourceScheduleBtn; }
element.isDisplayed()
只能用于现有元素。它 returns false
仅当找到元素但未显示时 (hidden=true f.e)。
要检查元素是否存在,您可以使用 List<WebElement> elements = driver.findElements(...);
如果没有找到元素,您将得到空列表而不是 NoSuchElementException
。
正如@pburgr 所解释的,这里是 findElements
if (driver.findElements(By.xpath("Delete button xpath")).size() > 0 ) {
System.out.println("Delete button is avilable");
// you can click on delete here, or whatever you wanna do.
}
else {
System.out.println("Delete button isn't avilable");
driver.close();
}
还有一种方法可以处理这种情况,那就是 try catch
阻塞。