我正在为网页编写自动化测试,用户必须根据其存在点击按钮
我正在使用Selenium WebDriver和Java
脚本
1.一次只能出现一个按钮(button1
或button2
)
2.如果存在button1
,则用户点击该内容
3.如果存在button2
,则用户点击该
代码:
if(driver.findElement(By.xpath("//*[@id='product_container_1']/div[2]/div[2]/div[3]/div[2]/div/a/div")).isDisplayed() ) {
//clicking on button1 if its presemt
WebElement clickBtn1 = driver.findElement(By.xpath("//*[@id='product_container_1']/div[2]/div[2]/div[3]/div[2]/div/a/div"));
clickBtn1.click();
}
else if(driver.findElement(By.xpath("//*[@id='product_container_1']/div[2]/div[2]/div[3]/div[3]/div[2]/div")).isDisplayed() ){
//Clicking on button2 if its present
WebElement clickBtn2 = driver.findElement(By.xpath("//*[@id='product_container_1']/div[2]/div[2]/div[3]/div[3]/div[2]/div"));
clickBtn2.click();
}
else
{
System.out.println("No such button found");
}
上面的代码段不起作用。有人可以帮忙纠正它。
注意:如果我删除了if-else条件并为每个按钮功能分别运行
谢谢,
答案 0 :(得分:0)
在你的if-else逻辑尝试使用显式等待之前。
WebDriverWait wait = new WebDriverWait(driver, 30);
wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//*[@id='product_container_1']/div[2]/div[2]/div[3]/div[2]/div/a/div")));
如果有帮助,请告诉我。
答案 1 :(得分:0)
感谢所有帮助过的人。如果将来有人需要,我会在这里发布工作代码。
方案: - 网页有两个按钮 - button1和button2。 - button1最初会出现 - 如果用户最初点击button1,则第二次按钮2将出现。 (在此实例中,button1对UI隐藏)
代码块:
if(!driver.findElements(By.xpath("//*[@id='product_container_1']/div[2]/div[2]/div[3]/div[3]/div[2]/div")).isEmpty()){
//Clicking on button2, which appears when button1 is not present
WebDriverWait wait = new WebDriverWait(driver, 30);
wait.until(ExpectedConditions.presenceOfElementLocated(By.xpath("//*[@id='product_container_1']/div[2]/div[2]/div[3]/div[3]/div[2]/div")));
Thread.sleep(5000);
driver.findElement(By.xpath("//*[@id='product_container_1']/div[2]/div[2]/div[3]/div[3]/div[2]/div")).click();
}
else if(driver.findElement(By.xpath("//*[@id='product_container_1']/div[2]/div[2]/div[3]/div[2]/div/a/div")).isEnabled() ){
//clicking on button1
WebDriverWait wait = new WebDriverWait(driver, 30);
wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//*[@id='product_container_1']/div[2]/div[2]/div[3]/div[2]/div/a/div")));
driver.findElement(By.xpath("//*[@id='product_container_1']/div[2]/div[2]/div[3]/div[2]/div/a/div")).click();
}
else
{
System.out.println("No such button found");
}
Thread.sleep(5000);