Webdriver不是从一种方法传递到另一种方法
问题描述:
我正在使用下面的代码。优先级1的测试已成功执行,但优先级为2的@test
下的代码未执行。Webdriver不是从一种方法传递到另一种方法
基本上,webdriver传递到另一个测试。如果我在第一次测试下编写所有代码,它将成功执行。
import javax.swing.plaf.basic.BasicTabbedPaneUI.TabSelectionHandler;
import org.junit.Assert;
import org.junit.BeforeClass;
import org.openqa.selenium.By;
import org.openqa.selenium.Keys;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.interactions.Actions;
import org.openqa.selenium.support.ui.ExpectedCondition;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;
import org.testng.annotations.Test;
import org.testng.asserts.*;
public class NonVodafone_TestNG
{
public static WebDriver driver;
public static WebDriverWait wait;
@Test(priority=1)
public void AuthorizeURL() throws InterruptedException
{
System.setProperty("webdriver.chrome.driver", "C:\\Users\\SinghA28\\Documents\\Abhimanyu_Office_Backup\\Softwares\\chromedriver_win32\\chromedriver.exe");
ChromeDriver driver = new ChromeDriver();
driver.manage().window().maximize();
driver.get("https://dev.id.vodafone.com/mockup/");
//Generating Authorize URL
driver.findElement(By.id("env_idp")).sendKeys("PreProd");
driver.findElement(By.id("opco")).sendKeys("NV");
driver.findElement(By.id("btn_debug_url")).click();
driver.get(driver.findElement(By.id("txt_url")).getAttribute("value"));
Thread.sleep(5000);
driver.findElement(By.id("button")).click();
}
@Test(priority=2)
public void LandingPage()
{
//Assert.assertEquals(true, driver.findElement(By.xpath("//*[@id='form']/div[1]/div[1]/label")).isDisplayed());
System.out.println(driver.getCurrentUrl());
}
}
答
在AuthorizeURL()
,你在方法的范围内声明一个新变量ChromeDriver driver
。您必须将其分配给类属性WebDriver driver
。
@Test(priority=1)
public void AuthorizeURL() throws InterruptedException
{
System.setProperty("webdriver.chrome.driver", "C:\\Users\\SinghA28\\Documents\\Abhimanyu_Office_Backup\\Softwares\\chromedriver_win32\\chromedriver.exe");
NonVodafone_TestNG.driver = new ChromeDriver(); // <-- HERE
答
由于驱动器参考变量已经宣布你只需要调用it.Change代码
ChromeDriver driver = new ChromeDriver();
要
driver = new ChromeDriver();
希望它会帮助你:)
待办事项你会得到一个异常? – Guy
您已经定义了一个静态类变量webdriver,但是随后在您正在使用的第一个测试中定义了另一个。静态变量未定义,您正尝试在第二个测试中使用该变量。 – Grasshopper
我得到一个空指针例外:( –