尝试使用Bamboo运行时,Selenium测试会挂起

时间:2016-09-20 19:31:00

标签: java maven selenium bamboo

我正在尝试使用Bamboo的构建和部署功能来运行我的项目中的Selenium Automated测试。

我们目前正在使用Maven任务来构建和运行常规JUNIT测试,并且计划是在代码成功部署到服务器之后使用另一个Maven任务来运行Selenium测试。目前,一切似乎都在本地运行得很好,但是当竹子试图运行Selenium测试时,它似乎无限期地挂起。不幸的是我没有远程访问服务器来直接观看它,但我知道它是运行OS版本的Microsoft服务器:Windows 2012 R2 64位。我也知道服务器使用的是java版“1.8.0_101”,这与我的本地设置相同。我已经包含了我在下面运行的代码示例。

import java.util.concurrent.TimeUnit;

import org.junit.Before;
import org.junit.Test;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.ie.InternetExplorerDriver;
import org.openqa.selenium.remote.DesiredCapabilities;

public class SeleniumTestExample {
WebDriver driver;
@Before
public void setup(){
    System.setProperty("webdriver.ie.driver", "src/test/resources/IEDriverServer32bit.exe");
    DesiredCapabilities ieCapabilities = DesiredCapabilities.internetExplorer();
    ieCapabilities.setCapability(InternetExplorerDriver.INTRODUCE_FLAKINESS_BY_IGNORING_SECURITY_DOMAINS, true);
    driver = new InternetExplorerDriver(null, ieCapabilities);
    driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
    driver.get("https://google.com");
}

@Test
public void printPageTitle(){
    System.out.println("Title of Page is: " + driver.getTitle());
    driver.quit();
}

}

在Bamboo中运行时,日志中唯一的输出是行......

  

启动InternetExplorerDriver服务器(32位)

     

2.53.1.0

     

收听端口8080

     

仅允许本地连接

3 个答案:

答案 0 :(得分:0)

应使用CI或Bamboo服务器来控制测试。您不应该尝试在CI服务器上运行测试。你遇到的问题可能就是因为这个原因。您正在尝试使用CI服务器作为本地计算机,它不会以与本地计算机相同的方式响应。相反,您应该在设置中使用selenium grid通过使用集线器和节点远程连接到计算机。您可能还必须使用remote webdriver。另请查看this帖子

答案 1 :(得分:0)

我见过这个使用TeamCity,在这种情况下,IE告诉你它的可执行文件只接受来自本地机器的连接。根据{{​​3}}

  

IEDriverServer.exe启动的HTTP服务器将访问控制列表设置为仅接受来自本地计算机的连接,并禁止来自远程计算机的传入连接。目前,如果不将源代码修改为IEDriverServer.exe,则无法更改。要在远程计算机上运行Internet Explorer驱动程序,请使用与您的语言绑定等效的RemoteWebDriver相关的Java独立远程服务器。

首先通过像这样的param运行一个chromedriver:

chromedriver --whitelisted-ips=""

这基本上会将所有IP列入白名单,当然并不总是理想的解决方案。但是会告诉您测试可以在此CI配置上运行。接下来要查找的是您的用户权限。请求您的管理员授予您更多权限以便完成工作。请记住,IE的保护模式可能需要您的用户进行一些其他更改。如果这些都没有帮助,请考虑使用IE节点Selenium org

答案 2 :(得分:0)

尝试摆脱代码中的一行:

System.setProperty("webdriver.ie.driver", "src/test/resources/IEDriverServer32bit.exe");

首先,它告诉selenium应该在哪里寻找IE的webdriver。由于Bamboo服务器是一台Windows机器,您必须使用文件的绝对路径进行设置,例如“C:\ test \ webdriver \ IEDriverServer32bit.exe”。

其次,可以使用Bamboo任务的环境变量设置属性。

第三,如果要动态定义它,可以在pom.xml中将属性定义为:

<webdriver.ie.driver.path> C:\test\webdriver\IEDriverServer32bit.exe </webdriver.ie.driver.path>

并在maven-surefire-plugin的帮助下在系统属性中使用它。

然后您可以使用命令

运行测试

mvn test -Dwebdriver.ie.driver.path=C:\test\webdriver\IEDriverServer32bit.exe

你想要的任何道路。