2017-10-06 11 views
0

Le mwthod ci-dessous que j'utilise pour créer des éléments dynamiques dans mon modèle d'usine de page. Je passe la valeur IOSClassChain sous la forme d'une chaîne, puis la convertit en élément. Cela fonctionne correctement lorsque l'élément est présent sur la page, mais cela renvoie null lorsque l'élément n'est pas présent. Ci-dessous la méthode:Je ne veux pas que cette méthode retourne null si l'élément n'est pas trouvé

public MobileElement mobileElementUsingIOSClassChain(String objElement) throws IOException { 

    MobileElement objMobileElement = null; 

    try { 
     objMobileElement = (MobileElement) ((AppiumDriver) GetDriver()).findElement(ByIosClassChain.iOSClassChain(objElement)); 

    } catch (Exception e) { 
     System.err.println("Element not found"); 
    } 
    return objMobileElement; 

} 

La valeur que je passe pour objElement est:

String elementStr = "**/XCUIElementTypeButton[`label=='Name'`]" 

Toutes les suggestions?

+4

Alors, que voulez-vous qu'il retourne? Ou devrait-il pas revenir du tout et lancer une exception à la place? –

+1

Utilisation facultative

+0

Les options sont IMHO pas une alternative appropriée pour une gestion d'exception raisonnable .... –

Répondre

0

Alors, que devrait-il retourner à la place? Ajoutez une instruction return dans le bloc catch (et supprimez throws declaration) ou supprimez complètement le try-catch-block et envoyez le Exception à l'appelant.

Il est d'abord considéré comme un mauvais style de codage pour utiliser catch (Exception e), attraper un Exception plus concret à la place (comme IOException).

+0

même si j'écris l'instruction return dans catch block, la méthode doit avoir une instruction return comme dernière instruction sinon elle affichera une erreur de compilation. Au lieu de cela je voulais savoir si nous pouvions créer un élément fictif ici que je peux passer à 'objElement' pour que cette méthode ne retourne jamais null. –

+0

Quelque chose comme ceci: 'objElement = dummyElementCreated' –