我在使用带有xml文件的testNg在selenium java中启动浏览器时遇到了一些问题。当没有" driver = new ChromeDriver()时,代码似乎工作正常;"我参与到目前为止所附的一切
所以她是我的班级档案
package corssBrowsers;
import java.util.concurrent.TimeUnit;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.testng.annotations.Parameters;
import org.testng.annotations.Test;
public class VerifyTitle {
WebDriver driver;
@Test(priority=1)
public void sam() {
System.out.println("Hello sam");
}
@Test(priority = 2)
@Parameters({"browser"})
public void browsers(String browsername) {
System.out.println(browsername);
if(browsername.equalsIgnoreCase("chrome")) {
System.out.println("You have selected " + browsername);
System.setProperty("webdriver.chrome.driver",
System.getProperty("user.dir") + "\\Drivers\\Windows\\chromedriver.exe");
driver = new ChromeDriver();
}
else {
System.out.println("You have not selected chrome");
}
driver.manage().window().maximize();
driver.get("www.yahoo.com");
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
}
}
我的testng.xml如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Suite" parallel="none">
<test name="Test">
<parameter name="browser" value="chrome"/>
<classes>
<class name="corssBrowsers.VerifyTitle"/>
</classes>
</test> <!-- Test -->
</suite> <!-- Suite -->
当我运行测试表单时,我一直得到xml:
[RemoteTestNG] detected TestNG version 6.14.2
Hello sam
chrome
You have selected chrome
Starting ChromeDriver 2.36.540470 (e522d04694c7ebea4ba8821272dbef4f9b818c91)
on port 13932
Only local connections are allowed.
===============================================
Suite
Total tests run: 2, Failures: 1, Skips: 0
===============================================
当我运行表单文件时,我得到:
PASSED: sam
FAILED: browsers
org.testng.TestNGException:
Parameter 'browser' is required by @Test on method browsers but has not been
marked @Optional or defined
在这两种情况下,即使代码正确,Chrome浏览器也无法启动(在我做的其他测试中也能正常工作)。那么,我做错了什么?
答案 0 :(得分:0)
browsers 方法有参数,此参数在TestNG XML中定义。如果您在类级别运行测试,那么系统将不会获取浏览器名称并将抛出错误。您可以在参数中添加可选标记,如果未在testng xml中指定值,或者如果您在类级别中运行,则可选的注释值将被视为默认值。
您需要修改以下代码
public void browsers(@Optional("chrome") String browsername) {
System.out.println(browsername);
答案 1 :(得分:0)
您必须为browsername参数添加默认值,让我们一起考虑它。 您在浏览器的xml runner文件中添加了一个参数,当您运行该文件时,参数将传递给声明@Parameters的@Test。 现在,如果您自己运行测试类,则该值不会从xml文件传递给@Test,因为没有启动您需要作为TestNG运行程序运行的文件。
请将此类默认值添加为参数:
display:block
}
再说一遍,尝试使用TestNG注释进行设置配置。我建议使用@BeforClass来创建驱动程序。