我来自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;
});
});
});
});
}
使用上面的代码获得以下异常。
答案 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();