我试图习惯使用Selenium进行自动化测试。到目前为止,我已成功完成此测试用例的所有方面,但最后一步是检查是否存在警报(已收到交易确认)
我尝试使用布尔值来执行此函数,但我不断收到同样的错误:驱动程序无法解析为变量。
有什么建议吗?
package com.scotia.test;
import org.openqa.selenium.Alert;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.Select;
import org.openqa.selenium.support.ui.WebDriverWait;
public class ScotiaTest1 {
public static void main(String[] args) throws InterruptedException {
System.setProperty("webdriver.chrome.driver","/Users/theone/Downloads/chromedriver-new");
// Create a new instance of the Chrome driver
WebDriver driver = new ChromeDriver();
//Login using Username and Password
driver.get("https://LEAP:Password10@apps.scotiabank.com/LEAP_Prototype/desktop/html/Chile_index.html#");
//Wait for 5 Sec
Thread.sleep(2000);
//Find Proximity Serie A link and click on it
driver.findElement(By.cssSelector("#investing_tab tr:nth-child(7) a.acct-name")).click();
//Wait for 5 Sec
Thread.sleep(2000);
//Find New Funds Button and click on it
driver.findElement(By.cssSelector(".pad-top-10.txt-right .btn.action-btn")).click();
//Wait for 5 Sec
Thread.sleep(2000);
//Select Field Rescue investment and choose Rescue
Select dropdown = new Select(driver.findElement(By.id("mf_action")));
dropdown.selectByVisibleText("Inversión");
//Wait for 5 Sec
Thread.sleep(2000);
//Select Field Current account and choose current account
dropdown = new Select(driver.findElement(By.id("selaccount_drpdown")));
dropdown.selectByVisibleText("Cuenta Corriente *** 0002 USD 10.000,00");
//Wait for 5 Sec
Thread.sleep(2000);
//Select Field Fund Type and choose medium term
dropdown = new Select(driver.findElement(By.id("term")));
dropdown.selectByVisibleText("Mediano Plazo");
//Wait for 5 Sec
Thread.sleep(2000);
//Select Field Mutual Fund Name and choose Proximity Series A
dropdown = new Select(driver.findElement(By.id("typefund")));
dropdown.selectByVisibleText("Proximidad Serie A");
//Wait for 5 Sec
Thread.sleep(2000);
//Select Field Fund account Name and choose 001
dropdown = new Select(driver.findElement(By.id("sub_accnt")));
dropdown.selectByVisibleText("001");
//Wait for 5 Sec
Thread.sleep(2000);
//Select Field Rode and type 222
driver.findElement(By.id("amount_field")).sendKeys("222");
//Wait for 5 Sec
Thread.sleep(2000);
//Find to Accept Button and click on it
driver.findElement(By.id("next")).click();
//Wait for 5 Sec
Thread.sleep(2000);
//Find to Confirm Button and click on it
driver.findElement(By.id("next")).click();
//Wait for 5 Sec
Thread.sleep(2000);
// Print a Log In message to the screen
//Wait for 5 Sec
Thread.sleep(2000);
}
public boolean isAlertPresent(){
try{
Alert a = new WebDriverWait(driver, 10).until(ExpectedConditions.alertIsPresent());
if(a!=null){
System.out.println("Alert is present");
driver.switchTo().alert().accept();
return true;
}else{
throw new Throwable();
}
}
catch (Throwable e) {
System.err.println("Alert isn't present!!");
return false;
}
//Wait for 5 Sec
Thread.sleep(2000);
}
}
答案 0 :(得分:1)
这是您使用的实际代码吗?它有很多问题:isAlertPresent()没有被调用,你在那里使用驱动程序,但它不是类的字段等。(你得到“错误:驱动程序无法解析为变量”因为这个)
我将其修改为可运行(将isAlertPresent()
合并到main()
),并在结尾处获得绿色“警报”。你的意思是?如果是的话,它不是警报,它只是一个div,所以不是这样:
Alert a = new WebDriverWait(driver, 10).until(ExpectedConditions.alertIsPresent());
写下这样的东西:
WebElement div = new WebDriverWait(driver, 10).until(ExpectedConditions.presenceOfElementLocated(By.className("success-msg")));