从Selenium中的AJAX调用中获取价值

时间:2018-05-07 23:57:47

标签: javascript java selenium

我正在进行测试,它将检查页面上是否存在链接,并且它正在引用正确的页面(动态生成的链接)。要测试我想在Selenium中进行AJAX调用的链接,要从服务器获取正确的URL并进行比较。我的挑战是从Selenium的AJAX调用中获取价值。

JavascriptExecutor jse = (JavascriptExecutor)driver;
String jsCode = 
            "var str = $.get('/User/GetDynamicURL/', function (result) {"
                        + "console.log('result: ' + result); "
                        + "return result;"
                    + "})"
           + "return str;";
String dynamicURL = (String) jse.executeScript(jsCode);

虽然我在控制台中看到预期的输出,但我的代码不起作用。 我得到例外:

java.lang.ClassCastException: com.google.common.collect.Maps$TransformedEntriesMap cannot be cast to java.lang.String

当我执行代码时:

    var str = $.get('/User/GetDynamicURL/', function (result) {
                    console.log('result: ' + result);
                    return result;
                });
    str;

对于我浏览器控制台中的str我得到一个看起来像这样的对象:

{readyState: 1, getResponseHeader: ƒ, getAllResponseHeaders: ƒ, setRequestHeader: ƒ, overrideMimeType: ƒ, …}

str.responseJSON返回所需的网址

请告诉我如何修复我的代码。 谢谢!

1 个答案:

答案 0 :(得分:0)

链接必须是一个webelement,对吧?所以你可以把它的href值与预期的URL进行比较(可能是一个字符串):

{{sanitisedLocation}}