mirror of
https://github.com/appium/appium.git
synced 2026-01-15 22:59:52 -06:00
Merge pull request #166 from jlipps/master
more flexibility in alert handling and getting text of buttons
This commit is contained in:
@@ -394,7 +394,7 @@ IOS.prototype.getText = function(elementId, cb) {
|
||||
this.remote.executeAtom('get_text', [atomsElement], cb);
|
||||
}
|
||||
} else {
|
||||
var command = ["au.getElement('", elementId, "').value()"].join('');
|
||||
var command = ["au.getElement('", elementId, "').text()"].join('');
|
||||
this.proxy(command, cb);
|
||||
}
|
||||
};
|
||||
|
||||
@@ -74,7 +74,8 @@ $.extend(au, {
|
||||
|
||||
, lookup: function(selector, ctx) {
|
||||
if (typeof selector === 'string') {
|
||||
var _ctx = this.web ? this.web : this.mainWindow;
|
||||
var _ctx = this.mainWindow
|
||||
, elems = [];
|
||||
|
||||
if (typeof ctx === 'string') {
|
||||
_ctx = this.cache[ctx];
|
||||
@@ -83,7 +84,14 @@ $.extend(au, {
|
||||
}
|
||||
|
||||
this.target.pushTimeout(0);
|
||||
var elems = $(selector, _ctx);
|
||||
if (selector === 'alert') {
|
||||
var alert = this.mainApp.alert();
|
||||
if (alert) {
|
||||
elems = $(alert);
|
||||
}
|
||||
} else {
|
||||
elems = $(selector, _ctx);
|
||||
}
|
||||
this.target.popTimeout();
|
||||
|
||||
return elems;
|
||||
|
||||
@@ -64,6 +64,15 @@ UIAElement.prototype.hasChildren = function() {
|
||||
type === "UIASwitch" || type === "UIAElementNil");
|
||||
};
|
||||
|
||||
UIAElement.prototype.text = function() {
|
||||
var type = this.type();
|
||||
if (type === "UIAButton") {
|
||||
return this.label();
|
||||
} else {
|
||||
return this.value();
|
||||
}
|
||||
};
|
||||
|
||||
UIAElement.prototype.matchesTagName = function(tagName) {
|
||||
var type = this.type();
|
||||
// i.e. "UIALink" matches "link:
|
||||
|
||||
@@ -85,4 +85,15 @@ describe "Computation" do
|
||||
a.accept
|
||||
end
|
||||
|
||||
it "should find alerts" do
|
||||
els = @driver.find_elements(:tag_name, 'button')
|
||||
els[1].click
|
||||
alert = @driver.find_element(:tag_name, 'alert')
|
||||
buttons = alert.find_elements(:tag_name, 'button')
|
||||
buttons[0].text.should eq("Cancel")
|
||||
buttons[0].click
|
||||
alerts = @driver.find_elements(:tag_name, 'alert')
|
||||
alerts.should be_empty
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
@@ -137,6 +137,15 @@ describeWd('calc app', function(h) {
|
||||
//};
|
||||
//_.each(["PORTRAIT", "LANDSCAPE"], testOrientation);
|
||||
|
||||
it('should be able to get text of a button', function(done) {
|
||||
h.driver.elementsByTagName('button', function(err, els) {
|
||||
els[0].text(function(err, text) {
|
||||
text.should.eql("ComputeSumButton");
|
||||
done();
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
return it('should get an app screenshot', function(done){
|
||||
h.driver.takeScreenshot(function(err, screenshot){
|
||||
assert.notEqual(typeof screenshot, "undefined");
|
||||
|
||||
@@ -11,7 +11,7 @@ describeWd('elementByTagName', function(h) {
|
||||
done();
|
||||
});
|
||||
});
|
||||
return it('should not find any invalid elements on the app and throw error', function(done) {
|
||||
it('should not find any invalid elements on the app and throw error', function(done) {
|
||||
h.driver.elementByTagName('buttonNotThere', function(err, element) {
|
||||
should.not.exist(element);
|
||||
err.status.should.eql(7);
|
||||
@@ -19,9 +19,33 @@ describeWd('elementByTagName', function(h) {
|
||||
done();
|
||||
});
|
||||
});
|
||||
it('should find alerts when they exist', function(done) {
|
||||
h.driver.elementsByTagName('button', function(err, els) {
|
||||
should.not.exist(err);
|
||||
els[1].click(function() {
|
||||
h.driver.elementByTagName('alert', function(err, el) {
|
||||
should.not.exist(err);
|
||||
el.elementsByTagName('button', function(err, buttons) {
|
||||
should.not.exist(err);
|
||||
buttons.length.should.equal(2);
|
||||
done();
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
it('should not find alerts when they dont exist', function(done) {
|
||||
h.driver.elementByTagName('alert', function(err, el) {
|
||||
should.exist(err);
|
||||
should.not.exist(el);
|
||||
err.status.should.eql(7);
|
||||
err['jsonwire-error'].summary.should.eql('NoSuchElement');
|
||||
done();
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
describeWd('elementByTagName', function(h) {
|
||||
describeWd('elementsByTagName', function(h) {
|
||||
it('should find both elements on the app', function(done) {
|
||||
h.driver.elementsByTagName('button', function(err, elements) {
|
||||
elements.length.should.equal(2);
|
||||
|
||||
Reference in New Issue
Block a user