webentwicklung-frage-antwort-db.com.de

Selenprüfung ohne Browser

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?

32
Mohyt

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)
5
Derek Lu

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()
53

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.

6
Dag

versuche dies

op = webdriver.ChromeOptions()
op.add_argument('headless')
driver = webdriver.Chrome(options=op)
0
coder

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()
    
0
Vikash Singh

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.

0
Swetha Reddy