Sélénium 2.53 ne fonctionne pas sur Firefox 47
j'obtiens une erreur en utilisant Firefox avec WebDriver.
org.openqa.selenium.firefox.NotConnectedException: Unable to connect
to host 127.0.0.1 on port 7055 after 45000 ms.
- version Firefox: 47.0
- sélénium: 2.53.0
- Windows 10 64 bit
est-ce que quelqu'un a une question similaire ou une idée quelle est la solution pour cela? Cela fonctionne très bien avec Chrome, mais avec Firefox aucune URL ne sera chargée.
15 réponses
malheureusement Selenium WebDriver 2.53.0 n'est pas compatible avec Firefox 47.0. Le composant WebDriver qui gère les navigateurs Firefox ( FirefoxDriver
) sera abandonné. À partir de la version 3.0, Selenium WebDriver aura besoin du binaire geckodriver
pour gérer les navigateurs Firefox. Complément d'information ici et ici .
par conséquent, pour utiliser Firefox 47.0 comme navigateur avec Selenium WebDriver 2.53.0, vous devez télécharger le pilote Firefox (qui est un fichier binaire appelé geckodriver
à partir de la version 0.8.0, et anciennement wires
) et exporter son chemin absolu vers la variable webdriver.gecko.driver
comme une propriété du système dans votre code Java:
System.setProperty("webdriver.gecko.driver", "/path/to/geckodriver");
heureusement, la bibliothèque WebDriverManager peut faire ce travail pour vous, i.e. télécharger le binaire Marionette approprié pour votre machine (Linux, Mac, ou Windows) et exporter la valeur de la propriété du système approprié. Pour utiliser cette bibliothèque, vous devez inclure cette dépendance dans votre projet:
<dependency>
<groupId>io.github.bonigarcia</groupId>
<artifactId>webdrivermanager</artifactId>
<version>3.0.0</version>
</dependency>
... puis exécutez cette ligne dans votre programme avant D'utiliser WebDriver:
WebDriverManager.firefoxdriver().setup();
un exemple complet d'un cas de test JUnit 4 utilisant WebDriver pourrait être le suivant:
public class FirefoxTest {
protected WebDriver driver;
@BeforeClass
public static void setupClass() {
WebDriverManager.firefoxdriver().setup();
}
@Before
public void setupTest() {
driver = new FirefoxDriver();
}
@After
public void teardown() {
if (driver != null) {
driver.quit();
}
}
@Test
public void test() {
// Your test code here
}
}
prendre en compte que Marionette sera la seule option pour l'avenir (pour WebDriver 3+ et Firefox 48+), mais actuellement (version 0.9.0 au moment de l'écriture) n'est pas très stable. Consultez la carte routière pour plus de détails.
mise à JOUR
Selenium WebDriver 2.53.1 a été publié le 30 juin 2016. FirefoxDriver
fonctionne à nouveau avec Firefox 47.0.1 comme navigateur.
essayez d'utiliser firefox 46.0.1. Il correspond le mieux avec le sélénium 2.53
https://ftp.mozilla.org/pub/firefox/releases/46.0.1/win64/en-US/
j'ai eu le même problème et j'ai découvert que vous devez changer de conducteur parce que support a été abandonné . Au lieu d'utiliser le Firefox Driver , vous devez utiliser le marionnette Driver pour exécuter vos tests. Je travaille actuellement sur la configuration moi-même et je peux poster quelques étapes suggérées si vous voulez quand j'ai un exemple de travail.
Voici les étapes que j'ai suivies pour obtenir ce travailler sur mon environnement Java sur Mac (a travaillé pour moi dans Mes installations Linux (Fedora, CentOS et Ubuntu) ainsi):
- téléchargez l'exécutable nocturne de la releases page
- Décompresser l'archive
- créer un répertoire pour Marionette (i.e.,
mkdir -p /opt/marionette
) - déplacez le fichier exécutable Non empaqueté dans le répertoire que vous avez créé
- mise à jour votre
$PATH
pour inclure l'exécutable (aussi, éditez votre.bash_profile
si vous voulez) - : bangbang: assurez-vous que vous
chmod +x /opt/marionette/wires-x.x.x
afin qu'il soit exécutable - lors de votre lancement, assurez-vous d'utiliser le code ci-dessous (c'est ce que j'ai utilisé sur Mac)
Note Rapide
ne fonctionne Toujours pas comme prévu, mais au moins obtient le navigateur lancé maintenant. Besoin de comprendre pourquoi - pour l'instant il semble que j'ai besoin de réécrire mes essais pour le faire fonctionner.
Java "Extrait De 1519350920"
WebDriver browser = new MarionetteDriver();
System.setProperty("webdriver.gecko.driver", "/opt/marionette/wires-0.7.1-OSX");
si vous utilisez OSX avec Homebrew, vous pouvez installer les anciennes versions de Firefox via brew cask:
brew tap goldcaddy77/firefox
brew cask install firefox-46 # or whatever version you want
après l'installation, vous aurez juste besoin de renommer votre exécutable FF dans le répertoire Applications En"Firefox".
plus d'information peut être trouvé à la git repo homebrew-firefox . Accessoires pour smclernon pour la création de la original cask .
si vous êtes sur un Mac, faites brew install geckodriver
et c'est parti!
dans le cas où quelqu'un se demande comment utiliser Marionette dans C#.
FirefoxProfile profile = new FirefoxProfile(); // Your custom profile
var service = FirefoxDriverService.CreateDefaultService("DirectoryContainingTheDriver", "geckodriver.exe");
// Set the binary path if you want to launch the release version of Firefox.
service.FirefoxBinaryPath = @"C:\Program Files\Mozilla Firefox\firefox.exe";
var option = new FirefoxProfileOptions(profile) { IsMarionette = true };
var driver = new FirefoxDriver(
service,
option,
TimeSpan.FromSeconds(30));
Firefoxoptions Overriding pour fournir la fonction d'ajouter des capacités supplémentaires et de définir le profil de Firefox parce que selenium v53 ne fournit pas cette fonction encore.
public class FirefoxProfileOptions : FirefoxOptions
{
private DesiredCapabilities _capabilities;
public FirefoxProfileOptions()
: base()
{
_capabilities = DesiredCapabilities.Firefox();
_capabilities.SetCapability("marionette", this.IsMarionette);
}
public FirefoxProfileOptions(FirefoxProfile profile)
: this()
{
_capabilities.SetCapability(FirefoxDriver.ProfileCapabilityName, profile.ToBase64String());
}
public override void AddAdditionalCapability(string capabilityName, object capabilityValue)
{
_capabilities.SetCapability(capabilityName, capabilityValue);
}
public override ICapabilities ToCapabilities()
{
return _capabilities;
}
}
Note: le lancement avec profil ne fonctionne pas avec FF 47, Il fonctionne avec FF 50 Tous les soirs.
Toutefois, nous avons essayé de convertir notre test Marionette, et ce n'est tout simplement pas viable pour le moment parce que la mise en œuvre du pilote n'est pas terminée ou boguée. Je suggère aux gens de déclasser leur Firefox en ce moment.
de nouvelles bibliothèques de sélénium sont sorties, selon https://github.com/SeleniumHQ/selenium/issues/2110
la page de téléchargement http://www.seleniumhq.org/download/ ne semble pas encore être mis à jour, mais en ajoutant 1 à la version mineure dans le lien, je pourrais télécharger la version C#: http://selenium-release.storage.googleapis.com/2.53/selenium-dotnet-2.53.1.zip
Ça marche pour moi avec Firefox 47.0.1.
comme note, j'ai pu construire juste le webdriver .xpi Firefox extension à partir de la branche principale de GitHub, en exécutant ./go //javascript/firefox-driver:webdriver:run
– qui a donné un message d'erreur mais a construit le build/javascript/firefox-driver/webdriver.XPI fichier, que je pourrais Renommer (pour éviter un conflit de nom) et charger avec succès avec le FirefoxProfile.Méthode AddExtension. C'était une solution raisonnable sans avoir à reconstruire toute la bibliothèque du sélénium.
Son un FF47 problème https://github.com/SeleniumHQ/selenium/issues/2110
s'il vous Plaît revenir à FF 46 ou au-dessous (ou à essayer de FF48 développeur https://developer.mozilla.org/en-US/Firefox/Releases/48 )
Instructions de déclassement: https://www.liberiangeek.net/2012/04/how-to-install-previous-versions-of-firefox-in-ubuntu-12-04-precise-pangolin / Ou si vous êtes sous Mac, comme suggéré par quelqu'un d'autre dans ce thread utiliser l'infusion.
Firefox 47.0 a cessé de travailler avec Webdriver.
la solution la plus simple est de passer à Firefox 47.0.1 et Webdriver 2.53.1. Cette combinaison fonctionne à nouveau. En fait, restaurer la compatibilité du Webdriver était la raison principale de la version 47.0.1, selon https://www.mozilla.org/en-US/firefox/47.0.1/releasenotes / .
vous pouvez essayer d'utiliser ce code,
private WebDriver driver;
System.setProperty("webdriver.firefox.marionette","Your path to driver/geckodriver.exe");
driver = new FirefoxDriver();
I mis à jour en sélénium 3.0.0 et la version de Firefox est 49.0.1
vous pouvez télécharger geckodriver.exe de https://github.com/mozilla/geckodriver/releases
assurez-vous de télécharger le fichier zip seulement, geckodriver-v0.11.1-win64.fichier zip ou win32 one selon votre système et l'extraire dans un dossier.
mettez le chemin pour que dossier dans les guillemets" votre chemin vers le pilote".N'oublie pas de mettre geckodriver.exe dans le chemin.
j'ai finalement installé une ancienne version supplémentaire de Firefox (utilisée pour les tests seulement) pour résoudre ce problème, en plus de ma dernière installation Firefox régulière (sécurisée, à jour).
cela nécessite que webdriver sache où il peut trouver le binaire Firefox, qui peut être défini par la propriété webdriver.firefox.bin
.
ce qui a fonctionné pour moi (mac, maven, /tmp/ff46
comme dossier d'installation) est:
mvn -Dwebdriver.firefox.bin=/tmp/ff46/Firefox.app/Contents/MacOS/firefox-bin verify
pour installer un ancien version de Firefox dans un dossier dédié, créez le dossier, ouvrez Finder dans ce dossier, téléchargez le dmg de Firefox, et faites-le glisser vers ce Finder.
voici à quoi ressemblait le problème dans Wireshar k
il suffit de charger 2.53.1 et tout fonctionne.
en date de septembre 2016
Firefox 48.0
et selenium==2.53.6
amende de travail sans aucune erreur
pour mettre à niveau firefox sur Ubuntu 14.04
seulement
sudo apt-get update
sudo apt-get upgrade firefox
il me semble que la meilleure solution est de mettre à jour vers Selenium 3.0.0, télécharger geckodriver.exe et utilisez Firefox 47 ou plus.
j'ai changé L'initialisation de Firefox en:
string geckoPathTest = Path.Combine(Environment.CurrentDirectory, "TestFiles\geckodriver.exe");
string geckoPath = Path.Combine(Environment.CurrentDirectory, "geckodriver.exe");
File.Copy(geckoPathTest, geckoPath);
Environment.SetEnvironmentVariable("webdriver.gecko.driver", geckoPath);
_firefoxDriver = new FirefoxDriver();
je peux confirmer que selenium 2.53.6
fonctionne avec firefox 44
pour moi sur ubuntu 15.