量角器将鼠标悬停在SVG饼图上的X Y坐标上并返回工具提示值

时间:2016-09-10 07:15:34

标签: protractor webdriverjs

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

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)。然后这不是一个功能   在D:\ workspace \ eclipse \ IotTester \ page \ UseCase1 \ HomePage.js:85:32   在D:\ workspace \ eclipse \ IotTester \ node_modules \ protractor \ built \ element.js :697:28

2 个答案:

答案 0 :(得分: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);
});

答案 1 :(得分:0)

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

await browser.driver.actions()
    .dragAndDrop(elementToHover, elementToHover)
    .perform();