Selenium PhantomJS Instanzen können nicht gleichzeitig ausgeführt werden

8

Ich verwende die node.js-API von Selenium, um PhantomJS-Instanzen für eine Reihe von Webseiten auszuführen. Der Code, den ich verwende, um die Aktionen auf den Seiten auszuführen, funktioniert gut, aber es scheint, dass nur eine Instanz von Selenium / PhantomJS gleichzeitig ausgeführt werden kann. Diese Funktion wird mehrmals vom gleichen Modul aus aufgerufen und durchläuft Seiten in einem Webshop, in denen die Paginierung clientseitig abgewickelt wird (deshalb benötige ich die Selenium / PhantomJS-Umgebung - um Daten von jeder Seite zu extrahieren).

Auch hier funktioniert der Code an und für sich, aber er kann nicht parallel ausgeführt werden. Was könnte das verursachen?

%Vor%     
fredrikekelund 16.07.2015, 14:05
quelle

4 Antworten

1

Obwohl PhantomJS jetzt veraltet ist, können Sie es weiterhin in isolierten Docker Containern ausführen, indem Sie Selenoid . Es gibt ein gebrauchsfertiges Bild mit der neuesten Version: Ссылка

    
vania-pooh 27.05.2017 08:34
quelle
0

Die parallele Ausführung mit Selen erfolgt normalerweise über Remote WebDrivers und das Selenium Grid2 Framework .

Dieses Tutorial im WeDoQA scheint genau das zu sein, was du willst. Auf einen Blick hat es jeden Test in einer separaten Klasse, während eine zentrale Test-Basisklasse auf den Hub von Grid2 zeigt, der dann (im Tutorial) die Tests parallel mit einem Firefox-Treiber ausführt. Sie könnten dies einfach umstellen, um phantomjs zu verwenden, aber Sie müssen möglicherweise Ihre Teststruktur überarbeiten.

    
Iridann 24.08.2015 09:31
quelle
0

Es scheint, dass Sie nur einen Treiber verwenden. Ich würde einen zweiten Treiber initialisieren und Threading dann parallel ausführen. Ich denke, das könnte den Job erledigen.

    
Charles Woodson 24.08.2016 15:45
quelle
-1

Verwenden Sie Thread für die parallele Ausführung oder Sie können ein beliebiges Test-Framework verwenden, das dafür sorgt, dass die Tests parallel ausgeführt werden.

    
Madhumitha 28.03.2017 19:34
quelle