小编sta*_*low的帖子

Selenium - 如何等待页面完全加载

我正在尝试使用Java和Selenium WebDriver自动化一些测试用例.我有以下场景:

  • 有一个名为"产品"的页面.当我点击"产品"页面中的"查看详细信息"链接时,会出现一个包含该项目详细信息的弹出窗口(模式对话框).
  • 当我点击弹出窗口中的"关闭"按钮时,弹出窗口关闭,页面自动刷新(页面刚刚重新加载,内容保持不变).
  • 关闭弹出窗口后,我需要点击同一页面中的"添加项目"按钮.但是当WebDriver试图找到"添加项目"按钮时,如果互联网速度太快,WebDriver可以找到并单击该元素.

  • 但是如果互联网很慢,WebDriver会在页面刷新之前找到按钮,但只要WebDriver单击该按钮,页面就会刷新并StaleElementReferenceException发生.

  • 即使使用了不同的等待,所有等待条件也变为真(因为重新加载之前和之后页面中的内容相同),甚至在页面重新加载和StaleElementReferenceException 发生之前.

如果Thread.sleep(3000);在单击"添加项目"按钮之前使用测试用例,则工作正常.这个问题还有其他解决方法吗?

java selenium-webdriver

62
推荐指数
3
解决办法
20万
查看次数

设置Firefox配置文件以使用Selenium和Java自动下载文件

我想使用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 selenium-webdriver

19
推荐指数
2
解决办法
3万
查看次数

通过catch块直接处理父类和子类之间的异常有什么区别

我有以下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.在这两种情况下都处理异常,但这有什么区别?

java exception-handling

5
推荐指数
1
解决办法
73
查看次数

无法建立连接,因为目标计算机主动拒绝它.connect(2)for"127.0.0.1"port 9515(Errno :: ECONNREFUSED)

在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)

selenium rubymine

4
推荐指数
1
解决办法
4140
查看次数

有没有办法从`org.testng.ITestResult``ITestNGMethod`转换为`java.lang.reflect.Method`

我想获得每次运行测试类时执行的测试方法.我使用以下代码

@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 ITestNGMethodjava.lang.reflect.Method

java testng

2
推荐指数
1
解决办法
317
查看次数

TestNG - 以编程方式运行特定测试

我正在尝试以编程方式创建 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)

java testng

1
推荐指数
1
解决办法
1440
查看次数

如果在程序中的任何地方都没有使用声明的类变量,为什么eclipse没有显示警告

如果我声明一个局部变量并且不在任何地方使用它,那么eclipse会显示错误

不使用局部变量的值

但是,如果我声明一个类变量而不在任何地方使用它,则不会显示此类警告.这是为什么?

java eclipse

1
推荐指数
1
解决办法
129
查看次数