我们正在使用webdriver.io和phantom.js进行一些测试。以下工作正常,给我一个元素列表:
return client
.url(config.host)
.waitForVisible('#myvenuelist', 2000)
.click('#myvenuelist')
.elements('li.venue')
.then(function(venues)
{
// Make sure there is at least one device
// Could do a scan in the before and check the size
venues.value.length.should.be.at.least(venueList.length);
done();
});
但我继续我的下一个测试,它做了很多相同的事情:
return client
.url(config.host)
.waitForVisible('#myvenuelist', 2000)
.click('#myvenuelist')
.waitForVisible("li.venue[data-id=" + allVenues[0].venue_id + "]", 5000)
.click("li.venue[data-id=" + allVenues[0].venue_id + "] a[class='btn primary']")
.waitForVisible('a[class="tab beacons"]', 2000)
.click('a[class="tab beacons"]')
.waitForVisible('a[class="tab beacons active"]', 2000)
.elements("a[class='add-monitor btn primary']")
.then(function(deviceList)
{
deviceList.value.length.should.be.at.least(1);
done();
});
我得到了deviceList对象。如果我检查它,值成员是一个数组,如预期的那样。但第二次我试图访问该数组,即使只是将其分配给另一个变量,我得到以下错误:
CommandError: Promise was fulfilled but got rejected with the following reason: Error: SyntaxError: DOM Exception 12
这让我发疯了。有关于DOM异常12错误的报告,但它们似乎不适用于我正在做的事情,其中许多都引用旧版本的Phantom.js。我们在1.9.8。
答案 0 :(得分:0)
试试这个:
let venueId = allVenues[0].venue_id;
return client
.url(config.host)
.waitForVisible('#myvenuelist', 2000)
.click('#myvenuelist')
.waitForVisible(`li.venue[data-id={venueId}]`, 5000)
.click(`li.venue[data-id={venueId}] a.btn.primary`)
.waitForVisible('a.tab.beacons', 2000)
.click('a.tab.beacons')
.waitForVisible('a.tab.beacons.active', 2000)
.elements("a.add-monitor.btn.primary")
.then( deviceList => deviceList.value.length.should.be.at.least(1) );