~~ Le test manuel n'est jamais autorisé ~~ Oncle qui promeut l'automatisation des tests: innocent: (Je pensais que le test manuel est également bon dans cette enquête)
Responsable "Voulez-vous que @umasaki enquête sur le test automatique?" I "Pour le Web, allez-y et faites une pause!" Responsable "Il existe également une application Windows" Je "Je ne peux pas encore faire ça: rolling_eyes:" Supérieur "J'ai vraiment hâte d'y être!" Je "Je le ferai quand cela arrivera!"
Donc, quand j'en ai entendu parler, il semble que beaucoup de travail soit nécessaire pour les tests du système, même pour les applications Windows. J'ai enquêté pour percer ici.
**2018/09/13 Ajout de paramètres et de problèmes inutiles. ** **
Il s'agit du logiciel utilisé pour la vérification. J'ai été vraiment attiré par le logiciel appelé SikuliX, mais en raison de l'unification de Selenium, il est devenu le logiciel suivant.
doux | version | Remarques |
---|---|---|
java | 1.8.0_161 | |
selenium-server-standalone.jar | 3.11.0 | |
Node.js | 8.11.1 | |
windows-build-tools | 2.3.0 | Installer à partir de npm |
Appium | 1.8.0 | Installer à partir de npm |
wd | 1.6.2 | Installer à partir de npm |
WinAppDriver | 1.0 | |
Windows 10 SDK | inspect.Utilisez exe |
J'ai construit un environnement sur Windows10 32 bits.
Paramètres ⇒ Mise à jour et sécurité ⇒ Pour les développeurs ⇒ Définir en mode développeur.
J'ai installé node-v8.11.1-x86.msi.
Quand j'ai procédé au contenu de "Experience Appium maintenant avec une installation simple" sur le site, je suis tombé sur l'installation d'Appium.
À partir de là, j'ai démarré l'invite de commande avec des privilèges d'administrateur et j'ai travaillé. (Je pense)
Je ne pense pas que les quatre paramètres ci-dessus soient nécessaires si vous n'utilisez pas de proxy. Je n'ai pas vérifié la signification de la première commande. Oui.
set HTTP_PROXY=http://proxyserver:8080
set HTTPS_PROXY=http://proxyserver:8080
npm config -g set proxy http://proxyserver:8080
npm config -g set https-proxy http://proxyserver:8080
npm config -g set registry http://registry.npmjs.org/
J'ai eu diverses erreurs telles que l'insertion de Python, mais je l'ai résolu avec cette commande. Pratique: étreindre:
npm install --global --production windows-build-tools
Frais (・ д ・ ` *)
npm install -g appium
** Post-scriptum 2018/09/13 Pour le pilote d'application Windows uniquement, le client Appium n'est pas requis. ** **
<détails> Seulement ici, je démarre l'invite de commande normalement et je travaille. ** Post-scriptum 2018/09/13
J'ai pu l'installer avec la commande suivante.
En interne, il semble exécuter WindowsApplicationDriver.msi, vous devrez donc peut-être exécuter l'invite de commande avec des privilèges d'administrateur. ** ** J'ai installé WindowsApplicationDriver.msi. Exécutez la commande suivante. Je n'ai pas vérifié la signification des paramètres de configuration de json.
Certains paramètres semblent ennuyeux, mais copiez. Après avoir créé le fichier de paramètres, exécutez la commande suivante. J'ai changé un peu l'échantillon et l'ai exécuté.
Si vous l'exécutez avec ceci, s'il s'agit d'un système d'exploitation japonais, "Display is 8" sera affiché sur la console. Les paramètres Maven ont été ajoutés à l'environnement de l'article précédent, ils sont donc les suivants.
Si vous ne pensez qu'à Appium, il y a certaines choses dont vous n'avez pas besoin.
PostScript 20/07/2018
Il est plus rapide de vérifier avec WinApp Driver UI Recorder à partir de ce qui suit. Utilisez inspect.exe, qui intervient lorsque vous installez le SDK Windows 10.
Dans mon environnement, il était dans C: \ Program Files \ Windows Kits \ 10 \ bin \ 10.0.16299.0 \ x86 \ inspect.exe. C'est mon style ... Démarrez inspect.exe et décochez Always on Top. J'ai lancé l'application que je voulais étudier (dans ce cas, une calculatrice), déplacé le curseur pendant un moment ou cliqué, et examiné l'AutomationId et l'ai reflété dans la source. ** Post-scriptum 2018/09/13
Les problèmes suivants ont été corrigés dans appium 1.9.0: hugging: ** Examinons en changeant la méthode de sortie du journal. Après avoir obtenu l'élément inexistant avec WinAppDriver et émis 404, il faut 10 minutes pour publier ...
Afin d'isoler le problème Appium (paramètre?), Lancez directement le pilote d'application Windows et vérifiez. Ajusté avec des arguments afin qu'il puisse être exécuté sans changer la source.
J'ai vu quelque part que je devais l'exécuter avec des privilèges d'administrateur. Résultat ... ** C'est bientôt fini! ** **
L'erreur revient également correctement avec NoSuchElementException,
Si vous ne pouvez pas le résoudre via Appium, vous devez démarrer WinAppDriver directement. ** Post-scriptum 2018/09/13
Et je fais diverses choses et de nouveaux problèmes ...: fatigué: ** WinAppDriver.exe est appelé via Appium, mais le processus de WinAppDriver.exe en est un même pour plusieurs applications, et lorsque quit est appelé, il semble que l'exe soit parti. Si vous démarrez directement WinAppDriver.exe, le processus de WinAppDriver.exe ne disparaîtra pas même si vous quittez. (Je me demande si c'est le cas)
Donc ça marche bien. S'il est fermé, même si le processus persiste, le pilote sera considéré comme non publié par Selenium Grid, vous devez donc attendre qu'il expire. J'ai décidé de limiter le nombre de sessions pouvant être démarrées sur une machine à une, sauf s'il y a une action telle que le démarrage de WinAppDriver.exe dans plusieurs processus dans Appium.
Recommended Posts
Installer le client Appium
npm install wd
Installer le pilote d'application Windows
npm install appium-windows-driver
Environnement
Lancez Selenium Grid Hub
java -jar selenium-server-standalone-3.11.0.jar -role hub
Lancer Appium en tant que nœud
NodeConfigAppium.json
{
"capabilities":
[
{
"platformName":"Windows",
"deviceName":"WindowsPC",
"maxInstances": 1
}
],
"configuration":
{
"cleanUpCycle":2000,
"timeout":30000,
"proxy": "org.openqa.grid.selenium.proxy.DefaultRemoteProxy",
"url":"(Côté nœud)http://XXX.XXX.XXX.XXX:4723/wd/hub",
"host": "(Côté nœud)XXX.XXX.XXX.XXX",
"port": (Côté nœud)4723,
"maxSession": 1,
"register": true,
"registerCycle": 5000,
"hubPort": (Côté moyeu)4444,
"hubHost": "(Côté moyeu)XXX.XXX.XXX.XXX"
}
}
appium --nodeconfig NodeConfigAppium.json
Je vais vraiment le déplacer
CalculatorTest.java
package test;
import java.net.URL;
import java.util.concurrent.TimeUnit;
import org.junit.AfterClass;Windows Application Driver
import org.junit.BeforeClass;
import org.junit.Test;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.remote.DesiredCapabilities;
import io.appium.java_client.windows.WindowsDriver;
public class CalculatorTest {
private static WindowsDriver<WebElement> CalculatorSession = null;
private static WebElement CalculatorResult = null;
@BeforeClass
public static void setup() {
try {
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability("app", "Microsoft.WindowsCalculator_8wekyb3d8bbwe!App");
capabilities.setCapability("deviceName", "WindowsPC");
capabilities.setCapability(CapabilityType.PLATFORM_NAME, "Windows");
CalculatorSession = new WindowsDriver<WebElement>(new URL("http://XXX.XXX.XXX.XXX:4723/wd/hub"), capabilities);
CalculatorSession.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
CalculatorResult = CalculatorSession.findElementByAccessibilityId("CalculatorResults");
} catch (Exception e) {
e.printStackTrace();
} finally {
}
}
@AfterClass
public static void TearDown() {
CalculatorResult = null;
if (CalculatorSession != null) {
CalculatorSession.quit();
}
CalculatorSession = null;
}
@Test
public void Addition() {
CalculatorSession.findElementByAccessibilityId("num1Button").click();
CalculatorSession.findElementByAccessibilityId("plusButton").click();
CalculatorSession.findElementByAccessibilityId("num7Button").click();
CalculatorSession.findElementByAccessibilityId("equalButton").click();
System.out.println(CalculatorResult.getText());
}
}
Examiner l'élément
Être en difficulté
Si vous spécifiez un élément inexistant, aucune erreur ne se produira dans le temps spécifié et attendez 10 minutes ou plus summary>
Si vous spécifiez un élément qui n'existe pas, aucune erreur ne se produira dans le délai spécifié et attendez 10 minutes ou plus.
Arguments lors du démarrage d'appium
appium --nodeconfig NodeConfigAppium.json --log "C:/Users/XXXXX/Desktop/node/log.txt" --log-level "info" --log-timestamp --local-timezone
Journal de sortie
〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓
● Vous devriez obtenir l'élément de résultat de la calculatrice
2018-05-02 14:33:07:512 - info: [HTTP] --> POST /wd/hub/session/4b9d3b16-2dd0-4e79-82f8-ce5694e514c6/element
2018-05-02 14:33:07:512 - info: [HTTP] {"using":"accessibility id","value":"CalculatorResults"}
2018-05-02 14:33:07:512 - info: [W3C] Driver proxy active, passing request on via HTTP proxy
2018-05-02 14:33:07:590 - info: [WinAppDriver] [STDOUT]
2018-05-02 14:33:07:590 - info: [WinAppDriver] [STDOUT]
2018-05-02 14:33:07:590 - info: [WinAppDriver] [STDOUT] ==========================================
2018-05-02 14:33:07:590 - info: [WinAppDriver] [STDOUT] POST /wd/hub/session/6DF966FD-DB90-4ECC-B490-552323C225FF/element HTTP/1.1
2018-05-02 14:33:07:590 - info: [WinAppDriver] [STDOUT] Accept: */*
2018-05-02 14:33:07:590 - info: [WinAppDriver] [STDOUT] Connection: keep-alive
2018-05-02 14:33:07:590 - info: [WinAppDriver] [STDOUT] Content-Length: 56
2018-05-02 14:33:07:590 - info: [WinAppDriver] [STDOUT] Content-Type: application/json
2018-05-02 14:33:07:590 - info: [WinAppDriver] [STDOUT] Host: 127.0.0.1:4724
2018-05-02 14:33:07:590 - info: [WinAppDriver] [STDOUT] User-Agent: appium
2018-05-02 14:33:07:590 - info: [WinAppDriver] [STDOUT]
2018-05-02 14:33:07:590 - info: [WinAppDriver] [STDOUT]
2018-05-02 14:33:07:622 - info: [WinAppDriver] [STDOUT] HTTP/1.1 200 OK
2018-05-02 14:33:07:622 - info: [WinAppDriver] [STDOUT] Content-Length: 100
2018-05-02 14:33:07:622 - info: [WinAppDriver] [STDOUT] Content-Type: application/json
2018-05-02 14:33:07:622 - info: [WinAppDriver] [STDOUT]
2018-05-02 14:33:07:622 - info: [WinAppDriver] [STDOUT] {"sessionId":"6DF966FD-DB90-4ECC-B490-552323C225FF","status":0,"value":{"ELEMENT":"42.3540260.3.5"}}
2018-05-02 14:33:07:622 - info: [JSONWP Proxy] Replacing sessionId 6DF966FD-DB90-4ECC-B490-552323C225FF with 4b9d3b16-2dd0-4e79-82f8-ce5694e514c6
2018-05-02 14:33:07:622 - info: [HTTP] <-- POST /wd/hub/session/4b9d3b16-2dd0-4e79-82f8-ce5694e514c6/element 200 117 ms - 100
〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓
● Vous devriez obtenir un élément qui n'existe pas
2018-05-02 14:33:32:841 - info: [HTTP] --> POST /wd/hub/session/4b9d3b16-2dd0-4e79-82f8-ce5694e514c6/element
2018-05-02 14:33:32:841 - info: [HTTP] {"using":"accessibility id","value":"num1Buttonabc"}
2018-05-02 14:33:32:841 - info: [W3C] Driver proxy active, passing request on via HTTP proxy
2018-05-02 14:33:33:044 - info: [WinAppDriver] [STDOUT]
2018-05-02 14:33:33:044 - info: [WinAppDriver] [STDOUT]
2018-05-02 14:33:33:044 - info: [WinAppDriver] [STDOUT] ==========================================
2018-05-02 14:33:33:059 - info: [WinAppDriver] [STDOUT] POST /wd/hub/session/6DF966FD-DB90-4ECC-B490-552323C225FF/element HTTP/1.1
2018-05-02 14:33:33:059 - info: [WinAppDriver] [STDOUT] Accept: */*
2018-05-02 14:33:33:059 - info: [WinAppDriver] [STDOUT] Connection: keep-alive
2018-05-02 14:33:33:059 - info: [WinAppDriver] [STDOUT] Content-Length: 52
2018-05-02 14:33:33:059 - info: [WinAppDriver] [STDOUT] Content-Type: application/json
2018-05-02 14:33:33:059 - info: [WinAppDriver] [STDOUT] Host: 127.0.0.1:4724
2018-05-02 14:33:33:059 - info: [WinAppDriver] [STDOUT] User-Agent: appium
2018-05-02 14:33:33:059 - info: [WinAppDriver] [STDOUT]
2018-05-02 14:33:33:059 - info: [WinAppDriver] [STDOUT]
2018-05-02 14:33:45:825 - info: [WinAppDriver] [STDOUT] HTTP/1.1 404 Not Found
2018-05-02 14:33:45:841 - info: [WinAppDriver] [STDOUT] Content-Length: 139
2018-05-02 14:33:45:841 - info: [WinAppDriver] [STDOUT] Content-Type: application/json
2018-05-02 14:33:45:841 - info: [WinAppDriver] [STDOUT]
2018-05-02 14:33:45:841 - info: [WinAppDriver] [STDOUT] {"status":7,"value":{"error":"no such element","message":"An element could not be located on the page using the given search parameters."}}
↑↑↑ Il faut 10 minutes pour revenir au POST ↓↓↓
2018-05-02 14:43:32:858 - info: [HTTP] <-- POST /wd/hub/session/4b9d3b16-2dd0-4e79-82f8-ce5694e514c6/element - - ms - -
〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓
2018-05-02 14:47:20:139 - info: [HTTP] --> DELETE /wd/hub/session/4b9d3b16-2dd0-4e79-82f8-ce5694e514c6
2018-05-02 14:47:20:139 - info: [HTTP] {}
2018-05-02 14:47:20:139 - info: [Appium] Removing session 4b9d3b16-2dd0-4e79-82f8-ce5694e514c6 from our master session list
2018-05-02 14:47:20:171 - info: [WinAppDriver] [STDOUT]
2018-05-02 14:47:20:171 - info: [WinAppDriver] [STDOUT]
2018-05-02 14:47:20:171 - info: [WinAppDriver] [STDOUT] ==========================================
2018-05-02 14:47:20:171 - info: [WinAppDriver] [STDOUT] DELETE /wd/hub/session/6DF966FD-DB90-4ECC-B490-552323C225FF HTTP/1.1
2018-05-02 14:47:20:171 - info: [WinAppDriver] [STDOUT] Accept: */*
2018-05-02 14:47:20:186 - info: [WinAppDriver] [STDOUT] Connection: keep-alive
2018-05-02 14:47:20:186 - info: [WinAppDriver] [STDOUT] Content-Length: 0
2018-05-02 14:47:20:186 - info: [WinAppDriver] [STDOUT] Content-Type: application/json
2018-05-02 14:47:20:186 - info: [WinAppDriver] [STDOUT] Host: 127.0.0.1:4724
2018-05-02 14:47:20:186 - info: [WinAppDriver] [STDOUT] User-Agent: appium
2018-05-02 14:47:20:186 - info: [WinAppDriver] [STDOUT]
2018-05-02 14:47:20:186 - info: [WinAppDriver] [STDOUT]
2018-05-02 14:47:20:218 - info: [WinAppDriver] [STDOUT] HTTP/1.1 200 OK
2018-05-02 14:47:20:218 - info: [WinAppDriver] [STDOUT] Content-Length: 63
2018-05-02 14:47:20:233 - info: [WinAppDriver] [STDOUT] Content-Type: application/json
2018-05-02 14:47:20:233 - info: [WinAppDriver] [STDOUT]
2018-05-02 14:47:20:233 - info: [WinAppDriver] [STDOUT] {"sessionId":"6DF966FD-DB90-4ECC-B490-552323C225FF","status":0}
2018-05-02 14:47:20:233 - warn: [WinAppDriver] Did not get confirmation WinAppDriver deleteSession worked; Error was: Error: Did not get a valid response object. Object was: {"sessionId":"6DF966FD-DB90-4ECC-B490-552323C225FF","status":0}
2018-05-02 14:47:20:514 - info: [HTTP] <-- DELETE /wd/hub/session/4b9d3b16-2dd0-4e79-82f8-ce5694e514c6 200 295 ms - 76
〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓
Arguments lors du démarrage de WinAppDriver
"C:\Program Files\Windows Application Driver\WinAppDriver.exe" XXX.XXX.XXX.XXX 4723/wd/hub
Si plusieurs applications sont démarrées à partir du pilote d'application Windows (WinAppDriver.exe) sur une machine, toutes les applications exécutées avec quit seront déconnectées.