1

我来自 WebDriver+Java 背景,是 Protractor、WebDriverJS 和 Jasmine 的新手。我有一个页面对象,我正在尝试定义一个函数,它将悬停在给定 XY 坐标上的饼图上并获取工具提示值并将其返回给调用函数。但到目前为止还没有运气。谁能帮我找到一个更好的解决方案?

this.getDisCount = function() {
    var dis = element(by
            .css('#piecontainer .highcharts-series>path[fill="#434348"]'));
    return dis.getSize().then(function(size) {
        return (size['height'] / 2).then(function(value) {
            return browser.actions().mouseMove(dis, {
                x : value,
                y : 0
            }).perform().then(function() {
                return element(by.css('#piecontainer g.highcharts-tooltip tspan:nth-of-type(6)')).getText().then(function(text) {
                    return text;
                });
            });
        });
    });
} 

使用上述代码获取以下异常。

  • 失败:(size.height / 2).then 不是 D:\workspace\eclipse\IotTester\page\UseCase1\HomePage.js:85:32 在 D:\workspace\eclipse\IotTester\node_modules\protractor\ 的函数内置\element.js :697:28
4

2 回答 2

1

主要有问题的部分在这条线上:

return (size['height'] / 2).then(function(value) {

size是一个已经解决的大小对象,它不是一个承诺,then()不需要该部分。

另外,让getDisCount()函数返回getText()承诺:

this.getDisCount = function() {
    var dis = element(by.css('#piecontainer .highcharts-series>path[fill="#434348"]'));
    dis.getSize().then(function(size) {
        return browser.actions().mouseMove(dis, {
            x : size['height'] / 2,
            y : 0
        }).perform();
    });

    return element(by.css('#piecontainer g.highcharts-tooltip tspan:nth-of-type(6)')).getText();
} 

然后,一旦您需要该值,请解析函数的结果:

myPageObject.getDisCount().then(function (discountValue) {
    console.log(discountValue);
});
于 2016-09-12T00:16:51.853 回答
0

量角器实例存在问题,因此请尝试使用可以获取的 web 驱动程序的 selenium 实例,browser.driver并使用dragAndDrop要悬停的元素的方法。

await browser.driver.actions()
    .dragAndDrop(elementToHover, elementToHover)
    .perform();
于 2019-06-27T11:46:16.057 回答