2016-11-29 91 views
0

我试图习惯于使用Selenium进行自动化测试。到目前为止,我已经成功地完成了这个测试用例的所有方面,除了最后一步是检查是否存在警报(已收到交易确认)错误:驱动程序无法解析为变量 - 硒java日食

我试图用布尔值来执行此功能,但我一直在同样的错误:驱动程序无法解析为变量。

有什么建议吗?

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:[email protected]/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);   
    } 

} 

回答

1

这是您正在使用的实际代码?它有很多问题:isAlertPresent()不被调用,你在那里使用驱动程序,但它不是类的字段等等(你有“错误:驱动程序无法解析为变量”因此)
I将其修改为可运行(将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"))); 

如果不是这种情况,请编辑与您的问题提醒你的意思。 enter image description here