Java 删除按钮正在selenium中创建动态事件…删除不像按钮。它像我网站中的图标。如何解决此问题?

Java 删除按钮正在selenium中创建动态事件…删除不像按钮。它像我网站中的图标。如何解决此问题?,java,selenium-webdriver,Java,Selenium Webdriver,我正在使用selenium来自动化我的站点。我的站点是一个管理站点,可以添加角色,也可以删除角色。顶部有一个添加按钮来添加角色,但所有角色中都有删除按钮,因此这会创建动态值。“删除”按钮由垃圾箱图标指定,它不是按钮,而是图像。我已经添加了我为此编写的源代码和java代码 driver.findElementBy.idphContent_btnAdd.click//add正在工作 driver.navigate.refresh; //driver.findElementBy.cssSelecto

我正在使用selenium来自动化我的站点。我的站点是一个管理站点,可以添加角色,也可以删除角色。顶部有一个添加按钮来添加角色,但所有角色中都有删除按钮,因此这会创建动态值。“删除”按钮由垃圾箱图标指定,它不是按钮,而是图像。我已经添加了我为此编写的源代码和java代码

driver.findElementBy.idphContent_btnAdd.click//add正在工作 driver.navigate.refresh; //driver.findElementBy.cssSelector'phContent\u gridview 1 tr td 对象t=driver.findElementBy.idphContent\u txtRoleName; //driver.findElementBy.idphContent_gridview 1_lnkDelete_4.单击; //assertTruecloseAlertAndGetItsText.matches^是否确实要删除此角色[\\s\\s]$; 伊夫=null&字符串t.containsindividual2 { driver.findElementBy.xpath//table/tbody/tr[2]/td[5]/a[2]/i.click; 删除System.out.printlnRole; //} driver.manage.timeouts.implicitlyWait30,TimeUnit.SECONDS; driver.navigate.refresh; } } 捕获异常e{ e、 打印跟踪; } } 项目经理 二级 对 吲哚内酮 一级 对 indtwo indtwo 一级 对 个人2个人2 一级 对
从您的HTML代码片段中我可以看到,对于不同的表项,ID是不同的。因此,您可以直接使用它们单击删除按钮/图像

以下是单击第三个删除按钮的方式:

driver.findElement(By.id("phContent_GridView1_lnkDelete_3")).click(); 
注意:-此外,在此之后,您可能会根据代码段得到一个警报框,您可以通过切换到它并接受它来处理该警报框

只需像这样替换代码,然后尝试:

    driver.findElement(By.id("phContent_btnAdd")).click();//add is working 
    driver.navigate().refresh(); 

    driver.findElement(By.xpath("//td[.='individual2'][1]/following-sibling::*//a[2]/i")).click(); //For click on the delete button for the row having role as "individual 2" 

    //Probably an alert box comes up after you click on delete button, which you can handle like this:
    /*Alert alert = driver.switchTo().alert();
      alert.accept(); //For deleting
      alert.dismiss(); //For dismissing and not deleting
    */

    driver.navigate().refresh(); 
   } 
  } 
    catch (Exception e){
        e.printStackTrace();
    } 
    } 

建议:“隐式等待”,如您使用的driver.manage.timeouts.implicitlyWait30,TimeUnit.SECONDS;基本上是在开始启动浏览器实例时使用的,即在此之后:WebDriver driver=new FirefoxDriver。它分配了一个全局超时,这意味着,每当selenium试图找到某个元素时,它必须等待最长的时间。但是,如果您想覆盖某个元素的时间限制,我们有“显式等待”。此链接将帮助您理解“隐式和显式等待”:

@Sravani:请尝试告诉我发生了什么

driver.findElement(By.id("phContent_btnAdd")).click();//add is working
driver.navigate().refresh();
//Get the Record
WebElement Record = driver.findElement(By.id("phContent_txtRoleName"));
if(Record.getAttribute("value").isEmpty())
{
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);    
               driver.navigate().refresh();

}
else 
{
    driver.findElement(By.xpath("//table/tbody/tr[2]/td[5]/a[2]/i")).click();
                  System.out.println("Role is deleted");

}

你能给我删除按钮的具体HTML代码吗..我可以看到你正在使用绝对Xpath检测删除按钮。我想这是具体的代码。。。id=phContent\u GridView1\u lnkDelete\u 3……但我不希望给出特定的行和列……就像在我之后,如果有人再添加几个角色,我的代码将不起作用……代码会起作用,因为即使他们在新行中添加新的删除按钮,他们的id也会不同。但是,如果您想删除某些角色,那么可以使用xpath。例如,如果要删除角色为individual2的行,可以使用xpath//td[.='individual2'][1]/以下同级::*//a[2]我将相应地修改下面的代码。看看这是否对你有用。@Sravani:Image在这里不可见。如果您在imgur中添加了图像,请在此处共享链接。这是链接…org.openqa.selenium.NoSuchElementException:找不到元素:{method:id,selector:phContent\u txtRoleName}命令持续时间或超时时间:30.07秒使用以下代码行:Object t=driver.findElementBy.idphContent\u txtRoleName;//driver.findElementBy.idphContent_gridview 1_lnkDelete_4.单击;//assertTruecloseAlertAndGetIts
Text.matches^是否确实要删除此角色[\\s\\s]$;伊夫=null&字符串t.containsindividual2{请尝试一下因为我对selenium和java非常陌生……请耐心地通过编写代码来解释我……谢谢advance@Sravani:我已经编辑了上面的代码,在**行下,只需像这样替换您的代码并尝试:*>如果您对此有任何疑问,请检查并让我知道。这是错误..失败:TestManagerRoles org。openqa.selenium.ElementNotVisibleException:元素当前不可见,因此可能无法与命令持续时间或超时进行交互:30.13秒构建信息:版本:'2.44.0',版本:'76d78cf',时间:'2014-10-23 20:02:37'系统信息:主机:'My PC',ip:'192.168.2.14',os.name:'Windows 7',os.arch:'x86',os.version:'6.1',java.version关于:“1.8.0_25”驱动程序信息:org.openqa.selenium.firefox.FirefoxDriverorg.openqa.selenium.NoSuchElementException:找不到元素:{method:id,selector:phContent\u txtRoleName}-这是错误..删除Catch异常并运行脚本。您将得到相同的错误消息。您能从那里给我完整的错误消息吗?是的…我也有这个疑问,并删除并运行了它…以前它通过说nullpointer exception和test use来运行。但是角色没有被删除。但现在测试本身失败了。我们将简单地回答这个问题。你能告诉我当前的情况吗?它现在删除记录了吗?如果是,那么在删除操作后会引发什么样的动态事件?不,它没有删除…我试过录制并播放删除,无论删除图标是否工作…它正在工作…but通过我的webdriver它不会删除。。。