【问题标题】:TestLink XML-RPC The call to the xml-rpc client failedTestLink XML-RPC 调用 xml-rpc 客户端失败
【发布时间】:2016-10-13 15:21:09
【问题描述】:

我试图在 selenium JAVA(testNG) 中使用 testLink(1.9.14 (Padawan)) xml-rpc 将测试结果自动同步到 testlink。 我提供了用于 webdriverJS 测试的 devkey 和 url。

public static String DEVKEY = "e69035750c91d1775900f4ce16dbcfb5";
public static String URL ="http://computername:80/testlink/lib/api/xmlrpc/v1/xmlrpc.php";

当我运行测试套件时,我总是收到如下错误:

testlink.api.java.client.TestLinkAPIException: The call to the xml-rpc client failed.
    at testlink.api.java.client.TestLinkAPIClient.executeXmlRpcMethod(TestLinkAPIClient.java:1266)
    at testlink.api.java.client.TestLinkAPIClient.execXmlRpcMethodWithCache(TestLinkAPIClient.java:1195)
    at testlink.api.java.client.TestLinkAPIClient.getProjects(TestLinkAPIClient.java:726)
    at testlink.api.java.client.TestLinkAPIHelper.getProjectInfo(TestLinkAPIHelper.java:64)
    at testlink.api.java.client.TestLinkAPIHelper.getProjectID(TestLinkAPIHelper.java:48)
    at testlink.api.java.client.TestLinkAPIClient.reportTestCaseResult(TestLinkAPIClient.java:184)
    at rocket.aldon.almwp.test.reportResult(test.java:19)
    at rocket.aldon.almwp.test.Test1(test.java:39)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:86)
    at org.testng.internal.Invoker.invokeMethod(Invoker.java:643)
    at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:820)
    at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1128)
    at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:129)
    at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:112)
    at org.testng.TestRunner.privateRun(TestRunner.java:782)
    at org.testng.TestRunner.run(TestRunner.java:632)
    at org.testng.SuiteRunner.runTest(SuiteRunner.java:366)
    at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:361)
    at org.testng.SuiteRunner.privateRun(SuiteRunner.java:319)
    at org.testng.SuiteRunner.run(SuiteRunner.java:268)
    at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
    at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:86)
    at org.testng.TestNG.runSuitesSequentially(TestNG.java:1244)
    at org.testng.TestNG.runSuitesLocally(TestNG.java:1169)
    at org.testng.TestNG.run(TestNG.java:1064)
    at org.testng.remote.AbstractRemoteTestNG.run(AbstractRemoteTestNG.java:126)
    at org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:137)
    at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:58)
Caused by: org.apache.xmlrpc.client.XmlRpcClientException: Failed to parse servers response: Expected methodResponse element, got br
    at org.apache.xmlrpc.client.XmlRpcStreamTransport.readResponse(XmlRpcStreamTransport.java:177)
    at org.apache.xmlrpc.client.XmlRpcStreamTransport.sendRequest(XmlRpcStreamTransport.java:145)
    at org.apache.xmlrpc.client.XmlRpcHttpTransport.sendRequest(XmlRpcHttpTransport.java:94)
    at org.apache.xmlrpc.client.XmlRpcSunHttpTransport.sendRequest(XmlRpcSunHttpTransport.java:44)
    at org.apache.xmlrpc.client.XmlRpcClientWorker.execute(XmlRpcClientWorker.java:53)
    at org.apache.xmlrpc.client.XmlRpcClient.execute(XmlRpcClient.java:166)
    at org.apache.xmlrpc.client.XmlRpcClient.execute(XmlRpcClient.java:157)
    at org.apache.xmlrpc.client.XmlRpcClient.execute(XmlRpcClient.java:146)
    at testlink.api.java.client.TestLinkAPIClient.executeXmlRpcMethod(TestLinkAPIClient.java:1232)
    ... 31 more
Caused by: org.xml.sax.SAXParseException; lineNumber: 1; columnNumber: 7; Expected methodResponse element, got br
    at org.apache.xmlrpc.parser.XmlRpcResponseParser.startElement(XmlRpcResponseParser.java:98)
    at org.apache.xerces.parsers.AbstractSAXParser.startElement(Unknown Source)
    at org.apache.xerces.parsers.AbstractXMLDocumentParser.emptyElement(Unknown Source)
    at org.apache.xerces.impl.XMLNSDocumentScannerImpl.scanStartElement(Unknown Source)
    at org.apache.xerces.impl.XMLNSDocumentScannerImpl$NSContentDispatcher.scanRootElementHook(Unknown Source)
    at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown Source)
    at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
    at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
    at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
    at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
    at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
    at org.apache.xerces.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source)
    at org.apache.xmlrpc.client.XmlRpcStreamTransport.readResponse(XmlRpcStreamTransport.java:175)
    ... 39 more

似乎 XML-RPC 连接在这里不起作用,从调试信息中,我可以看到 api 对象有 isConnected = false; 有人能遇到这个并找到解决方案吗? 我正在使用的罐子:

testlink-api-client-2.0.jar
selenium-java-2.52.0.zip
selenium-server-standalone-2.52.0.jar
xmlrpc-common-3.1-sources.jar
xmlrpc-common-3.1.jar
xmlrpc-client-3.1-sources.jar
xmlrpc-client-3.1.jar
commons-logging-1.1.jar
guice-3.0.jar
velocity-dep-1.4.jar
ws-commons-util.1.0.2.jar

有人可以帮忙研究吗? google了半天还是没搞清楚。

【问题讨论】:

  • 顺便说一句,使用 devkey 和 url,我可以在我的 webdriverJS 测试中正确构建 XML-RPC 连接。不知道为什么在 eclipse 中失败,jar 版本问题?

标签: java selenium-webdriver xml-rpc testlink


【解决方案1】:

我的以下配置运行良好。

前提条件:

  • 应该启用自动化 API
  • 应创建测试项目、测试计划、构建和测试用例。
  • 应该可以手动通过/失败

进行以下更改重新启动 Apache 服务

  1. Testlink 文件夹中的 config.inc.php 中按照以下行进行更改:

    $tlCfg->exec_cfg->enable_test_automation = ENABLED;

    $tlCfg->api->enabled = TRUE;

  2. C:\xampp\htdocs\testlink-1.9.15\lib\api\xmlrpc\v1文件夹中编辑这个文件xmlrpc.php如下:

    require_once("xmlrpc.class.php");

    define('XMLRPC_REQUEST', true);

    // Some browser-embedded clients send cookies. We don't want them. $_COOKIE = array();

    $GLOBALS['HTTP_RAW_POST_DATA'] = file_get_contents("php://input");

    $XMLRPCServer = new TestlinkXMLRPCServer();

注意:如果有任何其他配置可用,只需替换上面的行。请勿编辑任何其他内容。

  1. 重启Apache服务后,打开Testlink并打开测试项目并在项目管理中启用Test Automation (API keys)

  2. 从用户设置中获取API密钥并将其用作DEV_KEY

如有任何疑问,请告诉我。

【讨论】:

  • 感谢您的意见。我稍后会验证这一点。
猜你喜欢
  • 1970-01-01
  • 2016-09-15
  • 1970-01-01
  • 2012-03-18
  • 2015-09-11
  • 1970-01-01
  • 2013-02-17
  • 2011-02-22
  • 1970-01-01
相关资源
最近更新 更多