Ich benutze Selenium RC zum Testen. Um einen Belastungstest durchzuführen, möchte ich parallele Testfälle ausführen. Gibt es eine Möglichkeit, sie auszuführen, ohne einen Browser zu öffnen?
Auf Centos einrichten (alle Installationen als root ausführen)
Install pip Herunterladen https://bootstrap.pypa.io/get-pip.py
python get-pip.py
Installation von Selenium Wenn Sie Pip auf Ihrem System installiert haben, können Sie einfach die Python-Bindungen installieren oder aktualisieren: pip install -U Selenium
Alternativ können Sie die Quelldistribution von PyPI (z. B. Selenium-2.53.1.tar.gz) herunterladen, das Archiv aufheben und Folgendes ausführen:
python setup.py install
installieren Sie das Programm: pyvirtualdisplay
pip install pyvirtualdisplay
yum install Xvfb libXfont Xorg
Ändern Sie dann Ihr Skript, um die fetten Zeilen innerhalb von ** und ** hinzuzufügen.
**from pyvirtualdisplay import Display**
from Selenium import webdriver
from Selenium.webdriver.common.by import By
from Selenium.webdriver.common.keys import Keys
from Selenium.webdriver.support.ui import Select
from Selenium.common.exceptions import NoSuchElementException
from Selenium.common.exceptions import NoAlertPresentException
import unittest, time, re
klasse SeleniumDemo (unittest.TestCase):
def setUp(self):
**self.display = Display(visible=0, size=(800, 600))
self.display.start()**
self.driver = webdriver.Firefox()
self.driver.implicitly_wait(30)
self.base_url = "http://www.soastastore.com/"
self.verificationErrors = []
self.accept_next_alert = True
……
def tearDown(self):`enter code here`
self.driver.quit()
***self.display.stop()***
self.assertEqual([], self.verificationErrors)
Ja. Einfach PhantomJS installieren .
Ändern Sie dann diese Zeile:
driver = webdriver.Firefox()
zu:
driver = webdriver.PhantomJS()
Der Rest Ihres Codes muss nicht geändert werden und es wird kein Browser geöffnet.
Verwenden Sie zum Debuggen driver.save_screenshot('screen.png')
in verschiedenen Schritten Ihres Codes oder wechseln Sie einfach wieder zu Firefox:
if os.getenv("environment") == "production":
driver = webdriver.PhantomJS()
else:
driver = webdriver.Firefox()
Sie können Selenium kopflos betreiben und diese Frage/Antwort betrachten: Kann der Browser in Selenium RC ausgeblendet werden?
Insbesondere für Leistungslasttests sollten Sie einen Blick auf Apache JMeter werfen.
versuche dies
op = webdriver.ChromeOptions()
op.add_argument('headless')
driver = webdriver.Chrome(options=op)
Folgen Sie immer der Dokumentation. Hier ist, was Selen doc sagt. Es bietet ein Standalone-Glas .
Laden Sie das Standalone-Glas herunter. Und führe es mit Befehl aus
Java -jar Selenium-server-standalone.jar
Nun sehen Sie einen Stanalone-Server.
Richten Sie jetzt Ihren Web-Treiber wie unten beschrieben ein und der Rest wird so sein, wie er ist.
driver = webdriver.Remote(command_executor='http://127.0.0.1:4444/wd/hub', desired_capabilities={'browserName': 'htmlunit', 'version': '2', 'javascriptEnabled': True})
Zusammenfassungscode wird wie sein.
from Selenium import webdriver
from Selenium.webdriver.common.desired_capabilities import DesiredCapabilities
from Selenium.webdriver.common.keys import Keys
driver = webdriver.Remote(command_executor='http://127.0.0.1:4444/wd/hub',
desired_capabilities={'browserName': 'htmlunit', 'version': '2',
'javascriptEnabled': True})
driver.get("http://www.python.org")
assert "Python" in driver.title
elem = driver.find_element_by_name("q")
elem.clear()
elem.send_keys("pycon")
elem.send_keys(Keys.RETURN)
assert "No results found." not in driver.page_source
driver.close()
Es ist möglich, aber nicht mit dem Standard-Firefox-Treiber/Chrome/usw.
Sie müssten PhantomJS installieren. Weisen Sie Ihren WebDriver einfach einer Instanz des phantomJS-Treibers zu:
driver = webdriver.PhantomJS()
Wenn Sie Ihren Code jetzt ausführen, wird kein Browserfenster geöffnet.