Programm aus Selenium-Tutorial reagiert unerwartet

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Benutzeravatar
Strawk
User
Beiträge: 244
Registriert: Mittwoch 15. Februar 2017, 11:42
Wohnort: Aachen
Kontaktdaten:

Hallo Nutzer!
Von folgendem Programm, würde man eigentlich Fehlerfreiheit (im unittest-Sinne) erwarten.

Code: Alles auswählen

# -*- coding: utf-8 -*-
"""
Created on Tue Jul 23 17:13:13 2019

@author: Admin
"""

import unittest
from selenium import webdriver

class Google(unittest.TestCase):
    def setUp(self):
        self.driver = webdriver.Firefox(executable_path=r'C:\Users\Karl Kraft\Documents\System_Dateien\geckodriver.exe')
        
    def test_google_search(self):
        self.driver.get('https://www.google.com/xhtml')
        self.assertIn('Google', self.driver.title)
        search_field = self.driver.find_element_by_name('q')
        search_field.send_keys('google')
        search_field.submit()
        assert 'Es wurden keine mit deiner Suchanfrage' not in self.driver.page_source
    
    def test_google_negative_search(self):
        self.driver.get('https://www.google.com/xhtml')
        self.assertIn('Google', self.driver.title)
        search_field = self.driver.find_element_by_name('q')
        search_field.send_keys('shcbftrzvjkdzfdzcmcmcdszsdzszpruru')
        search_field.submit()
        assert 'Es wurden keine mit deiner Suchanfrage' in self.driver.page_source
    
    def tearDown(self):
        self.driver.close()
        
if __name__ == "__main__":
    unittest.main()
Es ergibt jedoch:
F.
======================================================================
FAIL: test_google_negative_search (__main__.Google)
----------------------------------------------------------------------
Traceback (most recent call last):
File "C:/Users/Karl Kraft/Documents/Programmierung_ausser_PHP/Python/freies_Programmieren/selenium/selenium_03.py", line 29, in test_google_negative_search
assert 'Es wurden keine mit deiner Suchanfrage' in self.driver.page_source
AssertionError

----------------------------------------------------------------------
Ran 2 tests in 17.502s

FAILED (failures=1)
(Was bedeutet eigentlich das anfängliche "F."?) Außerdem googelt es zuerst 'shcbftrzvjkdzfdzcmcmcdszsdzszpruru' und dann erst 'google', auch etwas seltsam. Habt ihr Ideen, warum das so ist?
LG Strawk
Ich programmiere erfolglos, also bin ich nicht.
Sirius3
User
Beiträge: 18270
Registriert: Sonntag 21. Oktober 2012, 17:20

Das `F` steht für FAILED. `.` für PASSED. Und Methoden haben keine Reihenfolge, daher werden sie alphabetisch sortiert durchlaufen.
Benutzeravatar
Strawk
User
Beiträge: 244
Registriert: Mittwoch 15. Februar 2017, 11:42
Wohnort: Aachen
Kontaktdaten:

Danke! Bliebe noch das Problem des fehlgeschlagenen Tests, aber da habe ich mittlerweile rausgefunden, dass der Firefox nicht komplett geladen wird. Mit Chrome funktioniert das Ganze wunderbar. Dann gleich zum nächsten Problem. Folgender Code lässt nichts im Suchfeld von Google erscheinen, auch kein "gool".

Code: Alles auswählen

# -*- coding: utf-8 -*-
"""
Created on Tue Jul 23 17:13:13 2019

@author: Admin
"""

from selenium import webdriver
import time
from selenium.webdriver.common.keys import Keys

driver = webdriver.Chrome(executable_path=r'C:\Users\Karl Kraft\Documents\System_Dateien\chromedriver.exe')
driver.get('https:/www.google.com/xhtml')
search_field = driver.find_elements_by_tag_name('input')
for i in search_field:
    if i.is_displayed() and i.is_enabled():
        i.send_keys('google', Keys.BACKSPACE, Keys.ARROW_LEFT, Keys.ENTER)
        break
Im Tutorial aber schon. Was will uns dieser Unterschied sagen?
Grüße Strawk
Ich programmiere erfolglos, also bin ich nicht.
Benutzeravatar
__blackjack__
User
Beiträge: 14045
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@Strawk: `i` ist ein *ganz* schlechter Name für eine Laufvariable in einer ``for``-Schleife wenn es keine ganze Zahl ist.

Wird das `send_keys()` denn überhaupt erreicht?
„A life is like a garden. Perfect moments can be had, but not preserved, except in memory. LLAP” — Leonard Nimoy's last tweet.
Antworten