我正在使用JAVA和Selenium WebDriver开发Test Automation脚本, 我的测试是在云环境中运行的(crossbrowsertesting.com)。 有一个功能可以拍摄浏览器窗口的快照, 当我使用RemoteWebDriver时,这行代码工作正常,但需要用WebDriver替换它,因为没有理由得到windowHandles。 但是我现在正在跟踪错误,说明 “对于类型WebDriver”
,方法getSessionId()未定义snapshotHash=myTest.takeSnapshot(driver.getSessionId().toString());
// takeSnapshot方法:
public String takeSnapshot(String seleniumTestId) throws UnirestException {
System.out.println("Screen Shots Taken.");
/*
* Takes a snapshot of the screen for the specified test.
* The output of this function can be used as a parameter for setDescription()
*/
HttpResponse<JsonNode> response = Unirest.post("http://crossbrowsertesting.com/api/v3/selenium/{seleniumTestId}/snapshots")
.basicAuth(username, api_key)
.routeParam("seleniumTestId", seleniumTestId)
.asJson();
// grab out the snapshot "hash" from the response
snapshotHash = (String) response.getBody().getObject().get("hash");
return snapshotHash;
}
答案 0 :(得分:0)
我不太明白为什么你需要使用“WebDriver”代替“RemoteWebDriver”? “RemoteWebDriver”是所有Web驱动程序实现的母亲,它应该足以与任何远程网格环境一起工作。我不明白为什么你需要切换到使用“WebDriver”引用,这是“RemoteWebDriver”实现的接口之一。 getSessionId()
不是任何接口规范的一部分,但它是RemoteWebDriver
提供的直接实现。
getWindowHandles()是WebDriver
接口规范的一部分,您仍然可以使用它。