web-dev-qa-db-de.com

Überprüfen Sie, ob das Element vorhanden ist python Selen

Ich versuche, Element durch zu lokalisieren

element=driver.find_element_by_partial_link_text("text")

in Python Selenium und das Element sind nicht immer vorhanden. Gibt es eine kurze Zeile, um zu überprüfen, ob es vorhanden ist, und NULL oder FALSE anstelle der Fehlermeldung zu erhalten, wenn es nicht vorhanden ist?

11
Nelly Kong

Sie können den try/except -Block wie folgt implementieren, um zu überprüfen, ob ein Element vorhanden ist oder nicht:

from Selenium.common.exceptions import NoSuchElementException

try:
    element=driver.find_element_by_partial_link_text("text")
except NoSuchElementException:
    print("No element found")

oder überprüfen Sie dasselbe mit einer der Methoden find_elements_...(). Es sollte eine leere Liste oder eine Liste von Elementen zurückgeben, die von einem übergebenen Selektor abgeglichen wurden, aber keine Ausnahme, falls keine Elemente gefunden wurden:

elements=driver.find_elements_by_partial_link_text("text")
if not elements:
    print("No element found")  
else:
    element = elements[0]  
23
Andersson

Manchmal wird das Element nicht sofort angezeigt. In diesem Fall müssen wir explizite Wartezeiten verwenden:

browser = webdriver.Chrome()
wait = WebDriverWait(browser, 5)

def is_element_exist(text):
    try:
        wait.until(EC.presence_of_element_located((By.PARTIAL_LINK_TEXT, text)))
    except TimeoutException:
        return False

Lösung ohne try/ except:

def is_element_exist(text):
    elements = wait.until(EC.presence_of_all_elements_located((By.PARTIAL_LINK_TEXT, text)))
    return None if elements else False

Wie das explizite Warten funktioniert, lesen Sie hier .

Importe:

from Selenium import webdriver
from Selenium.webdriver.support.ui import WebDriverWait
from Selenium.webdriver.common.by import By
from Selenium.webdriver.support import expected_conditions as EC
3
Alex Makarenko