如何在不同页面上单击具有多个不同属性的按钮(同名)?

How to click a button(with same name) with several different attributes on different pages?

我正在尝试创建一个脚本,该脚本将在多个页面上单击相同名称的按钮,但这些按钮具有不同的属性。有些有 id、一些名称、一些值和一些数据作为标识符。这个函数应该有一个属性列表,当我 运行 脚本时,它应该进入该列表,单击按钮并移动到下一步。我的问题是当其中一个按钮在列表中有 2 个属性时,它会单击两次。这就是我要解决的问题。

我尝试了 try 和 catch 函数,但还有其他几个我不完全了解的函数,因为我是新手。 Try and catch 函数适用于点击,但不能避免点击两次。

我的 try and catch 函数

    public void jeg_trykker_på_knap(String knap) {
        switch (knap) {

case "Slet":
            try { 
                driver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);
                driver.findElement(By.xpath("//*[@data-contribution-title='Din indberetning slettes']")).click();
                driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);
                } catch ( Exception a) {

                }
            try {    
                driver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);
                driver.findElement(By.xpath("//*[@id='slet']")).click();
                driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);
                } catch ( Exception b) {

                }
            try {   
                driver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);
                driver.findElement(By.xpath("//*[@value='Slet']")).click();
                driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);
                } catch ( Exception c) {

                }
            try {   
                driver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);
                driver.findElement(By.xpath("//button[text()='Slet']")).click();
                driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);
                } catch ( Exception d) {

            try {   
                driver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);
                driver.findElement(By.xpath("//*[@name='Slet']")).click();
                driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);
                } catch ( Exception e) {
                }   
                }           
            break;

您可以使用 XPATH 的 OR 条件。

示例如下:

//*[@value='Slet'] | //*[@name='Slet']

在上面的例子中 | 代表 OR

这样就不需要写不同的代码和切换了

按照我展示的 xpath 示例创建你的 Xpath

来源: