我正在尝试使用Java和Selenium WebDriver自动化一些测试用例.我有以下场景:
关闭弹出窗口后,我需要点击同一页面中的"添加项目"按钮.但是当WebDriver试图找到"添加项目"按钮时,如果互联网速度太快,WebDriver可以找到并单击该元素.
但是如果互联网很慢,WebDriver会在页面刷新之前找到按钮,但只要WebDriver单击该按钮,页面就会刷新并StaleElementReferenceException发生.
StaleElementReferenceException
发生之前.如果Thread.sleep(3000);在单击"添加项目"按钮之前使用测试用例,则工作正常.这个问题还有其他解决方法吗?
我想使用Selenium WebDriver和Java验证文件下载.要下载的文件是PDF格式.当WebDriver点击AUT中的"下载"链接时,Firefox会打开以下下载确认窗口:
我希望Firefox自动下载文件而不显示上面的确认窗口,所以我使用了以下代码:
FirefoxProfile firefoxProfile=new FirefoxProfile();
firefoxProfile.setPreference("browser.download.folderList",2);
firefoxProfile.setPreference("browser.download.manager.showWhenStarting",false);
firefoxProfile.setPreference("browser.download.dir",downloadPath);
firefoxProfile.setPreference("browser.helperApps.neverAsk.saveToDisk","application/pdf");
WebDriver driver=new FirefoxDriver(firefoxProfile);
Run Code Online (Sandbox Code Playgroud)
但仍然Firefox显示相同的窗口.如何设置Firefox配置文件以便自动下载PDF文件而不显示确认对话框?
我有以下Java代码
import org.testng.annotations.Test;
@Test
public void testException(){
try{
Assert.assertEquals(1,2);
} catch(Exception e) {
e.printStackTrace();
}
}
Run Code Online (Sandbox Code Playgroud)
运行测试时,断言失败,异常打印为标准输出,TestNG将测试结果显示为FAILED.
如果我使用相同的异常
catch(AssertionError e){
e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)
异常打印为错误输出,TestNG将测试结果显示为PASSED.在这两种情况下都处理异常,但这有什么区别?
在chrome broswer上运行我的简单selenium自动化脚本时,我得到了下面提到的错误.该脚本在firefox浏览器上运行正常.我的是HTTPS网站.
无法建立连接,因为目标计算机主动拒绝它. - connect(2)for"127.0.0.1"port 9515(Errno :: ECONNREFUSED)
IDE:Ruby Mine 7.1.4 Chrome浏览器:54.0.2840.71米(64位)
脚本:
require "selenium/webdriver"
driver = Selenium::WebDriver.for :chrome
driver.get('http://google.com')
Run Code Online (Sandbox Code Playgroud) 我想获得每次运行测试类时执行的测试方法.我使用以下代码
@AfterMethod
public void logout(ITestResult result){
Method method=result.getMethod(); //compliation error- Type mismatch: cannot convert from ITestNGMethod to Method
readAnnotation(method);
}
Run Code Online (Sandbox Code Playgroud)
有没有办法转换org.testng.ITestResult ITestNGMethod为java.lang.reflect.Method
我正在尝试以编程方式创建 testng.xml。我使用下面的Java代码
public static createTestSuit(String testClass){
XmlSuite suite = new XmlSuite();
suite.setName("My Suite");
XmlTest test = new XmlTest(suite);
test.setName("My Test");
List<XmlClass> classes = new ArrayList<XmlClass>();
classes.add(new XmlClass(testClass));
test.setXmlClasses(classes) ;
List<XmlSuite> suites = new ArrayList<XmlSuite>();
suites.add(suite);
TestNG tng = new TestNG();
tng.setXmlSuites(suites);
tng.run();
}
Run Code Online (Sandbox Code Playgroud)
“testClass”类包含几个测试方法。我不想运行所有这些方法。如何仅指定我想在上面的代码中运行的测试方法名称,以便上面的方法看起来像
public static createTestSuit(String testClass, List<String> testCasesID){
//code
}
Run Code Online (Sandbox Code Playgroud)
注:我的测试方法是形式
@Test(testName="testCaseID")
public void test1(){
}
Run Code Online (Sandbox Code Playgroud) 如果我声明一个局部变量并且不在任何地方使用它,那么eclipse会显示错误
不使用局部变量的值
但是,如果我声明一个类变量而不在任何地方使用它,则不会显示此类警告.这是为什么?