如何在不同页面上单击具有多个不同属性的按钮(同名)?
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
来源:
我正在尝试创建一个脚本,该脚本将在多个页面上单击相同名称的按钮,但这些按钮具有不同的属性。有些有 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
来源: