在Mac档位上使用Maven进行硒测试

时间:2018-06-26 07:37:32

标签: java maven selenium selenium-webdriver

我正在尝试通过Maven食谱中的这个示例来运行硒测试:

https://books.sonatype.com/mcookbook/reference/ch08s02.html

我已经创建了指定的项目以及TwitterTest.java类。

我所做的唯一更改是将Selenium运行的端口更改为7777。我通过更改代码来做到这一点:

    this.selenium = new DefaultSelenium("localhost", 7777, "*safari",  "http://www.twitter.com");

在我添加的POM中:

<properties>
    <selenium.server.port>7777</selenium.server.port>
</properties>

并进行了修改:

        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>selenium-maven-plugin</artifactId>
            <configuration>
                <port>${selenium.server.port}</port>
            </configuration>
     ...

之所以这样做,是因为Server.app在端口4444上运行launchd

运行mvn integration-test时,得到以下输出:

  

[INFO] --- selenium-maven-plugin:2.3:start-server(默认)@ crm-test ---

     

启动Selenium服务器

     

正在等待Selenium服务器...

     

[INFO]用户扩展:/Users/george/workspace/crm-test/target/selenium/user-extensions.js

     

17:22:12,724信息[org.openqa.selenium.server.SeleniumServer] Java:Oracle Corporation 25.102-b14

     

17:22:12,725信息[org.openqa.selenium.server.SeleniumServer]操作系统:Mac OS X 10.12.6 x86_64

     

17:22:12,732 INFO [org.openqa.selenium.server.SeleniumServer] v2.21.0,带有Core v2.21.0。从版本16551构建

     

17:22:12,841信息[org.openqa.selenium.server.SeleniumServer] RemoteWebDriver实例应连接到:http://127.0.0.1:7777/wd/hub

     

17:22:12,842信息[org.openqa.jetty.http.HttpServer]版本Jetty / 5.1.x

     

17:22:12,843信息[org.openqa.jetty.util.Container]启动HttpContext [/ selenium-server,/ selenium-server]

     

17:22:12,867信息[org.openqa.jetty.util.Container]开始org.openqa.jetty.jetty.servlet.ServletHandler@61a485d2

     

17:22:12,867信息[org.openqa.jetty.util.Container]启动HttpContext [/ wd,/ wd]

     

17:22:12,867信息[org.openqa.jetty.util.Container]启动HttpContext [/ selenium-server / driver,/ selenium-server / driver]

     

17:22:12,867信息[org.openqa.jetty.util.Container]启动HttpContext [/,/]

     

17:22:12,873信息[org.openqa.jetty.http.SocketListener]在0.0.0.0:7777上启动了SocketListener

     

17:22:12,873信息[org.openqa.jetty.util.Container]开始org.openqa.jetty.jetty.Server@65ae6ba4

     

17:22:13.325信息-检查资源别名

     

Selenium服务器已启动

     

[INFO]

     

[INFO] --- maven-surefire-plugin:2.12.4:test(默认)@ crm-test ---

     

[INFO] Surefire报告目录:/ Users / george / workspace / crm-test / target / surefire-reports

     
     

T E S T S

     
     

正在运行org.sonatype.mcookbook.TwitterTest

     

使用以下代码配置TestNG:org.apache.maven.surefire.testng.conf.TestNG652Configurator@66cd51c3

     

17:22:14,365信息[org.openqa.jetty.util.Credential]检查资源别名

     

17:22:14.369信息-命令请求:会话为空的getNewBrowserSession [* safari,http://www.twitter.com,]

     

17:22:14.372信息-创建新的远程会话

     

17:22:14.404信息-为http://www.twitter.com分配的会话1acfb5c8359144f5aba4922bc8406c0c,正在启动...

     

17:22:14.458信息-启动Safari来访问'file:/var/folders/02/t683l6k918v1s_sr0y8k71zm0000gn/T/customProfileDir1acfb5c8359144f5aba4922bc8406c0c/core/RemoteRunner.html?sessionId = 1acfb5c8%&bcFc%2%WaF%2%Basic%= 1% twitter.com&debugMode = false&driverUrl = http://localhost:7777/selenium-server/driver/'通过'/var/folders/02/t683l6k918v1s_sr0y8k71zm0000gn/T/customProfileDir1acfb5c8359144f5aba4922bc8406c0c/redirect_to_go_to_selenium.htm'...

一个Safari窗口打开,显示Selenium控制台(用于Web应用程序的Selenium功能测试,ThoughtWorks和Friends的开源代码)

但是除此之外,控制台只是无限地坐在那里,“启动Safari来访问”,没有进一步的进展。

我不确定这是Java相关问题还是环境问题。如果有帮助,我正在运行带有Sierra(10.12.6)的Mac Pro Server

更新:几分钟后,它输出:

  

17:52:23.843错误-无法启动新的浏览器会话,关闭浏览器并清除所有会话数据   org.openqa.selenium.server.RemoteCommandException:超时,等待窗口“ null”出现

如果在开发者控制台中查看,则会看到以下消息:

  

[错误]不允许加载本地资源:file:///var/folders/02/t683l6k918v1s_sr0y8k71zm0000gn/T/customProfileDird2e9a9287f5648fc921212a0230f2eb5/core/scripts/user-extensions.js [d2e9a9287f5648f2921       requireExtensionJs(selenium-remoterunner.js:581)       getSessionId(selenium-remoterunner.js:65)       buildDriverParams(selenium-remoterunner.js:464)       addUrlParams(selenium-remoterunner.js:415)       sendToRC(selenium-remoterunner.js:399)       nextCommand(selenium-remoterunner.js:203)       continueTest(selenium-executionloop.js:35)       开始(selenium-executionloop.js:26)       runSeleniumTest(selenium-remoterunner.js:125)       (匿名函数)(RemoteRunner.html:58)

     

[错误] Access-Control-Allow-Origin不允许使用Origin null。

     

[错误]无法加载资源:Access-Control-Allow-Origin不允许使用Origin null。 (驱动程序,第0行)

     

[错误]由于访问控制检查,XMLHttpRequest无法加载http://localhost:7777/selenium-server/driver/?seleniumStart=true&localFrameAddress=top&seleniumWindowName=&uniqueId=sel_94166&sessionId=d2e9a9287f5648fc921212a0230f2eb5&counterToMakeURsUniqueAndSoStopPageCachingInTheBrowser=1530146840266&sequenceNumber=0

有办法避免这些吗?

注意: -如果我尝试使用*firefox*chrome,我会得到:

  

18:01:17.623信息-正在准备Firefox配置文件...   18:01:39.160错误-无法启动新的浏览器会话,关闭浏览器并清除所有会话数据   java.lang.RuntimeException:等待创建概要文件时超时!

请注意,无论我尝试使用* firefox还是* chrome

,消息都会显示正在准备 Firefox 配置文件

1 个答案:

答案 0 :(得分:0)

哇,我已经从兔子洞里回来了。 为了使Selenium测试能够在Mac OSX上运行,我必须执行以下操作:

  1. 使用*googlechrome驱动程序
  2. 将Java密码学扩展安装到我的JRE / JDK中:http://www.oracle.com/technetwork/java/javase/downloads/jce8-download-2133166.html
  3. 将以下属性值传递给maven:mvn integration-test -Dmaven.wagon.http.ssl.insecure=true
  4. 将以下配置添加到selenium-maven-plugin

        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>selenium-maven-plugin</artifactId>
            <configuration>
                <trustAllSSLCertificates>true</trustAllSSLCertificates>
                ...