我正在尝试使用Webdriver I / O测试网站。
var jasmine = require('jasmine');
var webdriverio = require('webdriverio');
var client = null;
var settings = {
testAbilities: { desiredCapabilities: { browserName: 'phantomjs' } },
};
describe("Test", function() {
it('Should load Successfully', function(done) {
client = webdriverio.remote(settings.testAbilities).init()
.url('http://www.example.com')
.selectorExecute('//a', function(links) {
return links;
}).then(function(links) {
for (var i=0; i<links.length; i++) {
alert(JSON.stringify(links[i]));
}
done();
});
});
当此测试运行时,我会在alert
窗口中看到以下内容:
{"ELEMENT":"0"}
我期待一个链接。我如何获得锚标记?我想得到它的位置,以便我可以通过自动测试“点击”它。
谢谢!
答案 0 :(得分:0)
您可以使用click直接点击元素并将其传递给选择器,无需先检索元素或其位置。如果您的选择器匹配多个元素,则会单击第一个元素。
此示例获取所有a
个元素,点击第一个元素(恰好只有一个)并等待某个标题:
var options = {
desiredCapabilities: {
browserName: "phantomjs"
}
};
describe("Test", function() {
it("Should load Successfully", function(done) {
webdriverio
.remote(options)
.init()
.url("http://www.example.com")
.click("a")
.waitUntil(function() {
return this.getTitle().then(function(title) {
return title === "IANA — IANA-managed Reserved Domains";
});
})
.end()
.then(done);
}, 50000);
});
如果您确实想直接找到DOM元素或检索其位置,则应使用element和elements(或getLocation作为后者):
webdriverio
.remote(options)
.init()
.url("http://www.example.com")
.elements("p").then(function(elems){
console.log(elems.value.length + " paragraph elements found");
})
.getLocation("a").then(function(loc){
console.log("link location: " + JSON.stringify(loc));
})
.end();
selectorExecute
更适用于执行javascript函数,将选择器的结果作为参数传递。