~~ Manueller Test ist niemals erlaubt ~~ Onkel, der die Testautomatisierung fördert: unschuldig: (Ich dachte, dass der manuelle Test auch in dieser Umfrage gut ist)
Verantwortlich "Möchten Sie, dass @umasaki den automatischen Test untersucht?" I "Für das Web machen Sie eine Pause!" Verantwortlich "Es gibt auch eine Windows-Anwendung" I "Das kann ich noch nicht machen: rollende Augen:" Superior "Ich freue mich sehr darauf!" Ich "Ich werde es tun, wenn dies passiert!"
Als ich davon hörte, schien es, dass selbst für Windows-Anwendungen viel Arbeit für Systemtests erforderlich ist. Ich habe nachgeforscht, um hier durchzubrechen.
**2018/09/13 Unnötige Einstellungen und Probleme hinzugefügt. ** ** **
Dies ist die zur Überprüfung verwendete Software. Die Software SikuliX hat mich sehr angezogen, aber aufgrund der Vereinheitlichung von Selen ist sie zur folgenden Software geworden.
Sanft | Ausführung | Bemerkungen |
---|---|---|
java | 1.8.0_161 | |
selenium-server-standalone.jar | 3.11.0 | |
Node.js | 8.11.1 | |
windows-build-tools | 2.3.0 | Von npm installieren |
Appium | 1.8.0 | Von npm installieren |
wd | 1.6.2 | Von npm installieren |
WinAppDriver | 1.0 | |
Windows 10 SDK | inspect.Verwenden Sie exe |
Ich habe eine Umgebung unter Windows 10 32bit erstellt.
Einstellungen ⇒ Update und Sicherheit ⇒ Für Entwickler ⇒ Im Entwicklermodus einstellen.
Ich habe node-v8.11.1-x86.msi installiert.
Als ich mit dem Inhalt von "Appium jetzt mit einer einfachen Installation erleben" auf der Website fortfuhr, stieß ich auf die Installation von Appium.
Von hier an startete ich die Eingabeaufforderung mit Administratorrechten und arbeitete. (Ich denke)
Ich denke nicht, dass die obigen vier Einstellungen notwendig sind, wenn Sie keinen Proxy verwenden. Ich habe die Bedeutung des ersten Befehls nicht überprüft. Ja.
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/
Ich habe verschiedene Fehler wie das Einfügen von Python erhalten, aber ich habe es mit diesem Befehl gelöst. Praktisch: umarmen:
npm install --global --production windows-build-tools
Gebühr (・ д ・ ` *)
npm install -g appium
** 13.09.2018 Nachtrag Nur für Windows-Anwendungstreiber ist Appium Client nicht erforderlich. ** ** **
Nur hier starte ich die Eingabeaufforderung normal und arbeite.
npm install wd
** 13.09.2018 Nachtrag Ich konnte es mit dem folgenden Befehl installieren. Intern scheint WindowsApplicationDriver.msi ausgeführt zu werden, sodass Sie möglicherweise die Eingabeaufforderung mit Administratorrechten ausführen müssen. ** ** **
npm install appium-windows-driver
Ich habe WindowsApplicationDriver.msi installiert.
Führen Sie den folgenden Befehl aus.
java -jar selenium-server-standalone-3.11.0.jar -role hub
Ich habe die Bedeutung der Konfigurationseinstellungen von json nicht überprüft. Es gibt einige Einstellungen, die nervig erscheinen, aber kopieren.
NodeConfigAppium.json
{
"capabilities":
[
{
"platformName":"Windows",
"deviceName":"WindowsPC",
"maxInstances": 1
}
],
"configuration":
{
"cleanUpCycle":2000,
"timeout":30000,
"proxy": "org.openqa.grid.selenium.proxy.DefaultRemoteProxy",
"url":"(Knotenseite)http://XXX.XXX.XXX.XXX:4723/wd/hub",
"host": "(Knotenseite)XXX.XXX.XXX.XXX",
"port": (Knotenseite)4723,
"maxSession": 1,
"register": true,
"registerCycle": 5000,
"hubPort": (Nabenseite)4444,
"hubHost": "(Nabenseite)XXX.XXX.XXX.XXX"
}
}
Führen Sie nach dem Erstellen der Einstellungsdatei den folgenden Befehl aus.
appium --nodeconfig NodeConfigAppium.json
Ich habe die Probe ein wenig geändert und ausgeführt. Wenn Sie es damit ausführen und es sich um ein japanisches Betriebssystem handelt, wird "Display is 8" auf der Konsole angezeigt.
Die Maven-Einstellungen wurden der Umgebung des letzten Artikels hinzugefügt. Sie lauten also wie folgt. Wenn Sie nur an Appium denken, gibt es einige Dinge, die Sie nicht brauchen.
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());
}
}
20.07.2018 Nachtrag Es ist schneller, mit WinApp Driver UI Recorder Folgendes zu überprüfen.
Verwenden Sie inspect.exe, das bei der Installation des Windows 10 SDK eingeht. In meiner Umgebung befand es sich in C: \ Programme \ Windows Kits \ 10 \ bin \ 10.0.16299.0 \ x86 \ inspect.exe.
Es ist mein Stil ... Starten Sie inspect.exe und deaktivieren Sie Always on Top.
Ich startete die Anwendung, die ich untersuchen wollte (in diesem Fall einen Taschenrechner), bewegte den Cursor eine Weile oder klickte, untersuchte die AutomationId und spiegelte sie in der Quelle wider.
** 13.09.2018 Nachtrag Die folgenden Probleme wurden in Appium 1.9.0 behoben: Umarmen: **
Lassen Sie uns dies untersuchen, indem Sie die Ausgabemethode des Protokolls ändern.
appium --nodeconfig NodeConfigAppium.json --log "C:/Users/XXXXX/Desktop/node/log.txt" --log-level "info" --log-timestamp --local-timezone
〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓
● Sie sollten das Ergebniselement des Rechners erhalten
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
〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓
● Sie sollten ein Element erhalten, das nicht vorhanden ist
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."}}
↑↑↑ Die Rückgabe von POST ↓↓↓ dauert 10 Minuten
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
〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓
Das Posten dauert 10 Minuten, nachdem das nicht vorhandene Element mit WinAppDriver abgerufen und 404 ... Starten Sie den Windows-Anwendungstreiber direkt und überprüfen Sie, um das Appium-Problem zu isolieren (Einstellung?).
Mit Argumenten angepasst, damit es ausgeführt werden kann, ohne die Quelle zu ändern. Ich habe irgendwo gesehen, dass ich es mit Administratorrechten ausführen musste.
"C:\Program Files\Windows Application Driver\WinAppDriver.exe" XXX.XXX.XXX.XXX 4723/wd/hub
Ergebnis ... ** Es ist bald vorbei! ** ** ** Der Fehler tritt auch mit NoSuchElementException ordnungsgemäß wieder auf. Wenn Sie es nicht über Appium lösen können, sollten Sie WinAppDriver direkt starten.
** 13.09.2018 Nachtrag Und ich mache verschiedene Dinge und neue Probleme ...: müde: **
WinAppDriver.exe wird über Appium aufgerufen, aber der Prozess von WinAppDriver.exe ist sogar für mehrere Apps eins, und wenn quit beendet wird, scheint die exe weg zu sein.
Wenn Sie WinAppDriver.exe direkt starten, wird der Prozess von WinAppDriver.exe auch nach dem Beenden nicht ausgeblendet. (Ich frage mich, ob das der Fall ist) Also funktioniert es gut.
Wenn es geschlossen ist, wird der Treiber auch dann als nicht von Selenium Grid freigegeben behandelt, wenn der Prozess weiterhin ausgeführt wird. Sie müssen also warten, bis das Zeitlimit überschritten ist.
Ich habe beschlossen, die Anzahl der Sitzungen, die auf einem Computer gestartet werden können, auf eine zu beschränken, es sei denn, es gibt eine Aktion wie das Starten von WinAppDriver.exe in mehreren Prozessen in Appium.