Ich möchte Xcode UI Test verwenden, um die Automatisierung meiner App zu automatisieren.Verwenden von XCUIElementQuery zum Abfragen einer Schaltfläche in tableHeaderView nicht gefunden
Meine Ansicht Hierarchie wie: UITableView-> TableHeaderView-> Meine benutzerdefinierte Ansicht-> Einstellung Schaltfläche.
Ich möchte meine Schaltfläche mit AccessibilityIdentifier abfragen, ich setze es in meinem ViewController, und überprüfen Sie es mit dem Zugänglichkeits-Inspektor von Simulator, und mit meinem realen Gerät mit Voiceover überprüfen Sie die Schaltfläche ist Barrierefreiheit.
app.tables.buttons["settingBtn"].tap()
Warum meine Einstellung Taste Zugänglichkeit ist aber Xcode kann es nicht aufnehmen, und der Code von mir die Einstellung Taste nicht finden kann:
Aber mit meinem Code, kann es nicht gegründet werden ?
Kann mir jemand ein paar Tipps geben, wie man den UIElementQuery mit dem richtigen Weg benutzt, um auf meine Schaltfläche zuzugreifen?
--- --- Bearbeiten
In benutzerdefinierter Ansicht:
@implementation HeaderView
- (void)awakeFromNib {
[super awakeFromNib];
[self initAccessibility];
}
- (BOOL)isAccessibilityElement {
return NO;
}
- (NSArray *)accessibilityElements {
return @[self.settingButton];
}
- (NSInteger)accessibilityElementCount {
return [[self accessibilityElements] count];
}
- (NSInteger)indexOfAccessibilityElement:(id)element {
return [[self accessibilityElements] indexOfObject:element];
}
- (void)initAccessibility {
self.settingButton.isAccessibilityElement = YES;
self.settingButton.accessibilityIdentifier = @"settingBtn";
self.settingButton.accessibilityLabel = @"settingBtn";
}
- (IBAction)clickSettingButton:(id)sender {
if ([self.delegate respondsToSelector:@selector(clickSettingButton)]) {
[self.delegate clickSettingButton];
}
}
@end
in Viewcontroller:
- (void)initHeaderView {
self.headerView = [[[NSBundle mainBundle] loadNibNamed:NSStringFromClass([HeaderView class]) owner:self options:nil] firstObject];
self.headerView.delegate = self;
[self.headerView.backgroundImageView sd_setImageWithURL:[NSURL URLWithString:kURLString]];
[self.headerView setFrame:CGRectMake(0, 0, SCREENWIDTH, (SCREENWIDTH * 9/16))];
self.headerViewHeight = self.headerView.bounds.size.height;
[self.tableView addSubview:self.headerView];
self.tableView.contentInset = UIEdgeInsetsMake(self.headerViewHeight, 0, 0, 0);
self.tableView.contentOffset = CGPointMake(0, -self.headerViewHeight + kNavigationBarHeight);
}
in UI Testcode:
class PopupDialogUITests: XCTestCase {
override func setUp() {
super.setUp()
continueAfterFailure = false
XCUIApplication().launch()
}
override func tearDown() {
super.tearDown()
}
func testExample() {
let app = XCUIApplication()
app.tables.buttons["SettingBtn"].tap()
}
}
Diese Abfrage sieht korrekt aus. Können Sie mehr von Ihrem Anwendungscode posten, um beim Debuggen zu helfen? –
Können Sie die Ausgabe von 'app.tables.buttons.debugDescription' posten? – Oletha
@Oletha, die debugdescription ist: Finde: Nachkommen Typ Tabelle Ausgabe passend: { Tabelle 0x7fb6505e84e0: Merkmale: 35192962023424, {{0.0, 0.0}, {414,0, 736,0}}} ↪︎Find: Nachkommen Typ Knopf passende Keine Schaltfläche in der Tabelle gefunden, aber in Accessibility Inspector, sieht es so aus: http://imgur.com/uUEOVaQ –