步骤: 1. 在 Eclipse 中,我创建了一个名为“ForSe”的新项目。
在“src”文件夹→“默认包”下,我创建了一个名为
Login.java
的类。我在这个类中的代码是这样的:
public class Login_Valid { public static void main(String[] args) throws InterruptedException { System.setProperty("webdriver.chrome.driver","*my path*"); WebDriver driver = new ChromeDriver(); driver.manage().window().maximize(); driver.get("*URL of prject ForSe*"); driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS); driver.findElement(By.xpath("//*@id='email_address']")).sendKeys("*email address*"); driver.findElement(By.xpath("//*[@id='password']")).sendKeys("*Password*"); driver.findElement(By.xpath("//*[@id='login-form']/div[4]/button")).click(); } }
当我使用 run as java application
运行时,脚本运行得非常好。
但是当我在 TestNG 中使用相同的脚本时,它会跳过/失败我的测试。
创建 TestNG 脚本的步骤如下:
- 已安装 TestNG 并在同一
src
下创建一个名为ForSe_TestCases.java
的新包 我的 TestNG 脚本如下:
public class ForSe_TestCases { WebDriver driver; String url = "*project's URL*"; @Test (priority = 0) public void IO_login(WebDriver driver) { //ForSe test environment URL driver.navigate().to(url); //this is official email address of IO driver.findElement(By.xpath("//*[@id='email_address']")).sendKeys("*email address*"); //this is password driver.findElement(By.xpath("//*[@id='password']")).sendKeys("*Password*"); //click on submit button to login driver.findElement(By.xpath("//*[@id='login-form']/div[4]/button")).click(); System.out.println("Login button pressed"); } @BeforeTest public void setup() { // Set property for Chrome System.setProperty("webdriver.chrome.driver","*my path*"); WebDriver driver = new ChromeDriver(); //apply implicit wait driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS); //maximize window driver.manage().window().maximize(); } }
我无法理解我在哪一步出错了。这是我通过 Run as TestNG
[Utils] [ERROR] [Error] org.testng.TestNGException:
Cannot inject @Test annotated Method [IO_login] with [interface org.openqa.selenium.WebDriver].
===============================================
Default test
Tests run: 1, Failures: 1, Skips: 0
===============================================
===============================================
Default suite
Total tests run: 1, Failures: 1, Skips: 0
===============================================
最佳答案
更改以下代码行。
从public void IO_login(WebDriver driver)
到public void IO_login()
然后尝试运行您的代码,它一定会对您有用。有关这方面的更多详细信息,请参阅下面的代码。
public class ForSe_TestCases {
WebDriver driver;
String url = "http://google.com";
@Test (priority = 0)
public void IO_login()
{
driver.navigate().to(url);
System.out.println("Login Method");
}
@BeforeTest
public void setup()
{
System.setProperty("webdriver.chrome.driver", "C:\\Drivers\\chromedriver.exe");
driver = new ChromeDriver();
driver.manage().window().maximize();
driver.manage().timeouts().implicitlyWait(25, TimeUnit.SECONDS);
}
}
关于java - Selenium 脚本因 TestNG 注释而失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43132924/