4

Ich bereite mich vor, automatisierte Tests für die Web/Desktop-Anwendung zu schreiben, die sich derzeit in der Anfangsphase der Entwicklung befindet. Die verwendeten Technologien sind Laravel, VueJS und das wichtigste Elektronen-Framework. Electron ist ein Framework zum Erstellen nativer Anwendungen mit Web-Technologien wie JavaScript, HTML und CSS.Kann Selenium WebDriver zur Automatisierung von Desktop-Anwendungen verwendet werden?

So bin ich gespannt wenn ist es möglich, Selen WebDriver für die Automatisierung von Desktop-Anwendungen zu verwenden, die mit Web-Technologien erstellt werden (zum Beispiel Elektronen)?

Ich habe geschrieben erfolgreich einige Selen/Java-Tests für "Slack Web Application" (Slack Electron framefork mit entwickelt wird)

Jetzt will ich versuchen, die gleichen Tests für die Prüfung "Slack Desktop-App" zu verwenden. Wenn es möglich ist, kann ich vielleicht "SetupSelenium" @Before Method ändern?

Dies ist meine erste „SetupSelenium“ Methode für Web-basierte Anwendung: @BeforeMethod

public void setupSelenium() { 
    baseUrl = "https://slack.com/"; 

    System.setProperty("webdriver.chrome.driver", "C:\\UOOP\\WorkspaceJava\\chromedriver.exe"); 

    driver = new ChromeDriver(); 
    driver.manage().timeouts().implicitlyWait(1, TimeUnit.SECONDS); 
    driver.manage().window().maximize(); 
    driver.navigate().to(baseUrl); 

    homePage = new HomePage(driver); 
    signInPage = new SignInPage(driver); 
    signInToYourTeamPage = new SignInToYourTeamPage(driver); 
} 

Ich schätze helfen, wenn jemand eine Idee hat ... Vielleicht binärer Pfad auf slack.exe ??
An: C: \ Benutzer Danant \ AppData \ Local \ slack \ slack.exe

Antwort

1

\ Sie müssen sich einige ChromeOptions gesetzt, wenn die ChromeDriver Erstellen wie:

ChromeOptions options = new ChromeOptions(); 
options.setBinary(new File("C:\\path\\to\\slack.exe")); 

ChromeDriver driver = new ChromeDriver(options); 

ein Tutorial Es gibt in Die Electron-Dokumentation zu diesem Thema auch: https://xwartz.gitbooks.io/electron-gitbook/content/en//tutorial/using-selenium-and-webdriver.html

+0

Danke. Ich habe Ihren Code oben versucht, aber ich habe den folgenden Fehler erhalten: –

+0

[2996: 0115/154221: INFO: CONSOLE (24)] "(node: 7180) DeprecationWarning: 'root' ist veraltet, benutze 'global'", source: internal/process/warning.js (24) Informationen zum Reparieren von Slack-Task-Symbolen gegen C: \ Benutzer \ Danant \ AppData \ Local \ slack \ app-2.4.1 \ slack.exe Fehler beim Abrufen des Taskleistensymbols: System.Runtime.InteropServices .InvalidComObjectException: COM-Objekt, das von seinem zugrunde liegenden RCW getrennt wurde, kann nicht verwendet werden. bei SlackNotifier.TrayStateChanger d__1.MoveNext() –

+0

bei SlackNotifier.TrayStateChanger d__1.MoveNext() Über Slack Tray Icons gegen C bis fixup:.. \ Benutzer Danant \ AppData \ Local \ slack \ app \ -2.4.1 \ slack.exe Fehler beim Abrufen des Taskleistensymbols: System.Runtime.InteropServices.InvalidComObjectException: Ein COM-Objekt, das von seinem RCW getrennt wurde, kann nicht verwendet werden. bei SlackNotifier.TrayStateChanger. d__1.MoveNext() –

0

Wenn Sie nur Elektronen-Apps testen, sehen Sie sich spectron, die für diesen Zweck entwickelt wurde.

Wenn ich die Entwicklung Version meiner App bin Tests laufen I Tests wie:

const Application = require('spectron').Application 

...

beforeEach(function() { 
    this.app = new Application({ 
    path: './node_modules/electron/dist/electron.exe', 
    args: ['./www/'] 
    }); 

    return this.app.start() 
}) 

afterEach(function() { 
    if (this.app && this.app.isRunning()) { 
    return this.app.stop() 
    } 
}) 

it('shows an initial single window', function() { 
    return this.app.client 
    .getWindowCount() 
    .should.eventually.equal(1) 
}) 

Um eine Produktion App zu testen, ändern Sie einfach die path auf den übergebenen Application Optionen.

+1

Danke. Diese Lösung funktioniert wahrscheinlich, wenn Sie Code in Java Script schreiben. Ich bevorzuge es, Code in Java zu schreiben.Meine Freunde sind viel erfahrener in Java Script als ich und sie sagten mir, dass sie Probleme mit Spectron und Webriver IO hatten. Also habe ich beschlossen, Selenium zu probieren. –

+0

Sehr wahr. Nur JavaScript/TypeScript. Obwohl Sie über Selenuim keinen Zugang zu den Elektronen-APIs haben. – Tim

Verwandte Themen