2012-06-11 13 views
9

Witam Używam selenu do automatyzacji testów na stronach internetowych. Używam selenu 2 i Pythona i chciałbym uzyskać odpowiedzi tylko w tych ramach. W jaki sposób mogę sprawdzić, czy jakiś tekst jest obecny, czy nie? Próbowałem aktywów równy, ale nie działa?Jak sprawdzić, czy jakiś tekst jest obecny na stronie internetowej przy użyciu selenu 2?

assertEquals(driver.getPageSource().contains("email"), true); 
+0

Kontekst jest wspaniałą rzeczą tutaj - co masz na myśli, że nie działa? Jak to nie działa? Co to robi? Opublikuj kopię kodu HTML, tuż obok elementu, który próbujesz zdobyć. Dlaczego skanujesz CAŁE źródło strony? Być może będziesz musiał wrócić do deski kreślarskiej w samouczkach Selenium. – Arran

Odpowiedz

15

Można użyć driver.page_source i prostego wyrażenia regularnego, aby sprawdzić, czy tekst istnieje:

import re  
src = driver.page_source 
text_found = re.search(r'text_to_search', src) 
self.assertNotEqual(text_found, None) 
0

Można spróbować coś jak

browser = webdriver.Firefox() 
browser.get(url) 
WebDriverWait(browser, 10).until(EC.element_to_be_clickable((By.LINK_TEXT, 'some link text'))) 

Zasadniczo powyższe linie uruchomić Firefoksa, przejdź do podanego adresu URL, aby przeglądarka utrzymywała się przez 10 sekund, aby jakiś adres URL się wczytał, a następnie poszukaj określonego tekstu łącza, jeśli nie zostanie znaleziony tekst łącza, wywoływany jest wyjątek TimeoutException czerwony.

Zwróć uwagę na liczbę użytych nawiasów, wystąpią błędy, jeśli liczba nawiasów nie odpowiada powyższym.

Aby móc uruchomić powyższe stwierdzenie dodaje muszą być zadeklarowane

from selenium import webdriver 
from selenium.webdriver.common.by import By 
from selenium.webdriver.support.ui import WebDriverWait 
from selenium.webdriver.support import expected_conditions as EC 
6

Dla tych, którzy nadal są zainteresowani:

Generic Rozwiązanie

if (text in driver.page_source): 
    # text exists in page 

unittest:

assertTrue (text in driver.page_source) 

pytest:

assert (text in driver.page_source == True)