2017-07-05 3 views
0

J'utilise XCUITest avec XCode version 8.3.3. L'application dispose d'un bouton de connexion qui lance une fenêtre de navigateur. Je me demandais si quelqu'un pourrait me dire comment je peux accéder à la valeur de l'URL qui s'ouvre. Je veux vérifier que nous lançons l'URL correcte lors de la sélection du bouton de connexion.XCUITest obtenir la valeur de l'URL

let app = XCUIApplication() 
let loginButton = app.buttons["Login"] 
loginButton.tap() 

A ce stade, la fenêtre du navigateur est ouvert: enter image description here

Comment puis-je obtenir la valeur de xyz.com?

Utilisation de l'accessibilité Inspecteur, je peux voir: enter image description here

Répondre

2

J'ai créé un petit projet que le chargement google.com dans un SFSafariViewController sur le lancement. Quand je lance des tests de l'interface utilisateur contre cette application et imprime la description de débogage de la fenêtre, je reçois le texte suivant:

(lldb) po XCUIApplication().windows.descendants(matching: .any) 
    t = 29.26s  Use cached accessibility hierarchy for com.tito.Safari 
    t = 29.27s  Find: Descendants matching type Window 
    t = 29.27s  Find: Descendants matching type Any 
Find: Target Application 0x6000000afa20 
    Output: { 
    Application 0x6000001684c0: {{0.0, 0.0}, {375.0, 667.0}}, label: 'Safari' 
    } 
    ↪︎Find: Descendants matching type Window 
    Output: { 
     Window 0x600000169a80: Main Window, {{0.0, 0.0}, {375.0, 667.0}} 
     Window 0x60000016a8c0: {{0.0, 0.0}, {375.0, 667.0}} 
     Window 0x60000016fb40: {{0.0, 0.0}, {375.0, 667.0}} 
     Window 0x60000016c780: {{0.0, 0.0}, {375.0, 667.0}} 
     Window 0x600000169e40: {{-0.0, -0.0}, {375.0, 667.0}} 
    } 
    ↪︎Find: Descendants matching type Any 
     Output: { 
     Button 0x608000169900: traits: 8589934593, {{9.5, 22.0}, {43.0, 34.0}}, label: 'Done' 
     Other 0x608000165b80: traits: 8589935104, {{68.5, 24.5}, {295.0, 29.0}}, identifier: 'URL', label: 'Address', value: 10% 
     Button 0x608000169840: traits: 8589934593, {{336.5, 24.5}, {29.0, 29.0}}, identifier: 'StopButton', label: 'stop' 
     Button 0x600000168100: traits: 146028888065, {{66.5, 24.5}, {299.0, 29.0}}, identifier: 'URL', label: 'Address', value: ‎google.com 
     Other 0x6080001696c0: traits: 8589934592, {{0.0, 20.0}, {375.0, 44.0}} 
     WebView 0x608000167ec0: traits: 8589934592, {{0.0, 0.0}, {375.0, 667.0}} 
     Other 0x608000167e00: traits: 8589934592, {{0.0, 0.0}, {375.0, 667.0}} 
     Other 0x608000169b40: traits: 8589934592, {{0.0, 0.0}, {375.0, 667.0}} 
     Other 0x608000167a40: traits: 8589934592, {{0.0, 622.5}, {375.0, 0.5}} 
     Button 0x6080001675c0: traits: 8589934849, {{0.5, 625.0}, {42.0, 40.0}}, label: 'Back' 
     Button 0x600000167bc0: traits: 8589934849, {{104.0, 625.0}, {42.0, 40.0}}, label: 'Forward' 
     Button 0x600000167c80: traits: 8589934593, {{207.5, 624.0}, {51.0, 40.0}}, label: 'Share' 
     Button 0x60000016fa80: traits: 8589934593, {{320.5, 625.5}, {55.0, 40.0}}, label: 'Open in Safari' 
     Toolbar 0x608000167b00: traits: 35192962023424, {{0.0, 623.0}, {375.0, 44.0}} 
     Other 0x608000165ac0: traits: 8589934592, {{0.0, 0.0}, {375.0, 667.0}} 
     Other 0x608000169780: traits: 8589934592, {{0.0, 0.0}, {375.0, 667.0}} 
     Other 0x608000169480: 
     Other 0x608000169180: traits: 8589934592, {{0.0, 0.0}, {375.0, 667.0}} 
     Other 0x60000016cc00: traits: 8589934592, {{0.0, 64.0}, {24.0, 603.0}} 
     Other 0x6080001690c0: traits: 8589934592, {{0.0, 0.0}, {375.0, 667.0}} 
     Other 0x600000168400: {{0.0, 0.0}, {375.0, 667.0}} 
     Other 0x600000169180: traits: 8589934592, {{0.0, 0.0}, {375.0, 667.0}} 
     Other 0x600000169f00: 
     Other 0x60000016a680: traits: 8589934592, {{0.0, 0.0}, {375.0, 667.0}} 
     Other 0x600000167b00: {{0.0, 0.0}, {375.0, 20.0}} 
     Other 0x60000016fd80: traits: 8388608, {{6.0, 0.0}, {39.0, 20.0}} 
     Other 0x60000016e340: traits: 8388608, {{50.0, 0.0}, {13.0, 20.0}}, label: '3 of 3 Wi-Fi bars', value: SSID 
     Other 0x60000016fe40: traits: 8389120, {{161.0, 0.0}, {57.0, 20.0}}, label: '10:33 AM' 
     Other 0x60000016e880: traits: 8388608, {{337.0, 0.0}, {33.0, 20.0}}, label: '-100% battery power' 
     Other 0x60000016dc80: {{0.0, 0.0}, {375.0, 20.0}} 
     StatusBar 0x600000169240: {{0.0, 0.0}, {375.0, 20.0}} 
     Other 0x60000016a440: traits: 8589934592, {{0.0, 0.0}, {375.0, 667.0}} 
     Other 0x600000170140: 
     Other 0x60000016da40: traits: 8589934592, {{-0.0, -0.0}, {375.0, 667.0}} 
     Other 0x60000016c600: 
     Other 0x60000016af80: traits: 8589934592, {{-0.0, -0.0}, {375.0, 667.0}} 
     } 

Vous pouvez voir que l'élément qui contient la valeur google.com est considérée comme un bouton que le cadre d'accessibilité. Il semble faux, mais c'est comme ça et il n'y a rien que vous puissiez faire à ce sujet. La façon d'accéder à la valeur de cet élément serait le

XCUIApplication().buttons['URL'].value! 

suivant Le seul problème est que c'est renvoie les éléments suivants

‎gen.xyz, secure and validated connection 

Donc la dernière chose à faire est d'analyser cela et vous aurez la adresse

let value = XCUIApplication().buttons["URL"].value as! String 
let address = value.components(separatedBy: ",").first! 

C'est certainement hacky bien et pourrait changer à l'avenir si Apple décide d'appliquer leurs propres conseils à leurs propres produits en matière d'accessibilité.

+3

Merci pour la réponse détaillée !! Très utile. – rfodge

+1

Quand la valeur revient, elle a \ u (e2) au début, savez-vous pourquoi? – rfodge

+0

Hmm non, quelle URL essayez-vous de charger? –