TL/DR: Im Moment startet es 2 Browser, sondern nur den Test in 1. Was ich vermisse?Selenium Hub, startet 2 Browser führt nur Test in 1 von ihnen (Selen Python)
Also versuche ich Selen Hub auf einem Mac (OS X 10.11.5) arbeiten. I installiert mit this, dann startet Nabe in einer Anschlußlasche mit:
selenium-standalone start -- -role hub
dann in einem weiteren Register der Klemme auf derselben Maschine einen Knoten registrieren.
selenium-standalone start -- -role node -hub http://localhost:4444/grid/register -port 5556
Es zeigt in console mit 5 verfügbaren Firefox und Chrome-Browser auf.
Also hier ist mein Code. In einer Datei namens globes.py habe ich das.
Im Moment versuche ich nur einen einzigen Test zu starten, der so aussieht.
import unittest
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import Select
from selenium.common.exceptions import NoSuchElementException
from globes import *
class HeroCarousel(unittest.TestCase):
def setUp(self):
for driver_instance in globes.desired_cap:
self.driver = webdriver.Remote(
command_executor=globes.selenium_server_url,
desired_capabilities=driver_instance)
self.verificationErrors = []
def test_hero_carousel(self):
driver = self.driver
driver.get(globes.base_url)
hero_carousel = driver.find_element(By.CSS_SELECTOR, 'div.carousel-featured')
try: self.assertTrue(hero_carousel.is_displayed())
except AssertionError, e: self.verificationErrors.append("home_test: Hero Carousel was not visible")
def tearDown(self):
self.driver.close()
self.assertEqual([], self.verificationErrors)
if __name__ == "__main__":
unittest.main()
Im Moment startet es sowohl Firefox als auch Chrome, führt aber nur den Test in Firefox aus. Chrome öffnet sich und sitzt nur auf einer leeren Seite und schließt nicht. Ich nehme an, dass etwas nicht stimmt mit dem, wie ich den Test geschrieben habe. Also was fehlt mir? Ich entschuldige mich, wenn das offensichtlich ist, aber ich lerne nur, wie man Hub einrichtet, und habe gerade genug Python gelernt, um Selen-Tests vor ein paar Wochen zu schreiben.
Ich denke Hubs arbeiten, wie es beide startet, aber ich habe versucht, einen zweiten Knoten auf der gleichen Maschine an einem anderen Anschluss und bekam das gleiche. Nur für den Fall, dass hier der Hub gedruckt wird.
INFO - Got a request to create a new session: Capabilities [{browserName=chrome, javascriptEnabled=true, version=, platform=ANY}]
INFO - Available nodes: [http://192.168.2.1:5557]
INFO - Trying to create a new session on node http://192.168.2.1:5557
INFO - Trying to create a new session on test slot {seleniumProtocol=WebDriver, browserName=chrome, maxInstances=5, platform=MAC}
INFO - Got a request to create a new session: Capabilities [{browserName=firefox, javascriptEnabled=true, version=, platform=ANY}]
INFO - Available nodes: [http://192.168.2.1:5557]
INFO - Trying to create a new session on node http://192.168.2.1:5557
INFO - Trying to create a new session on test slot {seleniumProtocol=WebDriver, browserName=firefox, maxInstances=5, platform=MAC}
'Selbst .driver = ... 'innerhalb der for-Schleife wird nur einen Verweis auf den letzten ... –
halten, so dass es chrome startet und "self.driver" auf "webdriver.Remote" setzt und dann "self.driver" mit der Instanz für firefox überschreibt, wodurch der Verweis verloren geht die Chrome-Instanz –
Danke für den Kommentar, es scheint, als würde es das erklären, aber wie starte ich mehrere Webdriver-Instanzen und halte sie verlinkt. Ich habe versucht, dem Beispiel zu folgen (http://stackoverflow.com/questions/9453327/using-selenium-web-driver-to-run-test-on-multiple-browsers), weiß es aber nicht genau Java, damit ich nicht verstehe, warum meins davon abweicht. Ich habe ein Beispiel gesehen, wo Leute nur im Browser in der Befehlszeile übergeben, aber [Leute] (http://stackoverflow.com/questions/14991393/how-do-i-set-up-a-selenium-grid-python -test-to-test-over-multiple-machine) schlagen dagegen vor. – Cynic