Ich teste eine eckige Web-App mit Selen und Python. Für meinen Test richte ich einige Daten über API-Aufrufe ein. Jetzt möchte ich warten, bis die Daten im Frontend angezeigt werden, bevor ich mit meinem Test fortfahre. Wir haben derzeit eine Wartezeit von 60 Sekunden, um dieses Problem zu überwinden. aber ich war für eine intelligentere Warte hoffen und schrieb den folgenden Code:benutzerdefinierte Subroutine für WebDriverWait.until wirft einen Fehler
def wait_for_plan_to_appear(self,driver,plan_locator):
plan_name_element = UNDEF
try:
self.navigateToPlanPage()
plan_name_element = driver.find_element_by_xpath(plan_locator)
except NoSuchElementException:
pass
return plan_name_element
def find_plan_name_element(self,plan_id):
plan_locator = '//*[@data-hraf-id="'+plan_id+'-plan-name"]'
plan_name_element = UNDEF
try:
plan_name_element = WebDriverWait(self.driver,60,2).until(self.wait_for_plan_to_appear(self.driver,plan_locator))
except TimeoutException:
self.logger.debug("Could not find the plan with plan_id = "+plan_id)
return plan_name_element
In meinem Test-Skript, ich rufe:
self.find_plan_name_element('e7fa25a5-0b39-4a97-b99f-44c48439ce99') # the long string is the plan-id
Allerdings, wenn ich diesen Code ausführen - ich erhalte folgende Fehler :
error: 'int' object is not callable"
Wenn ich die wait_for_plan_to_appear, so dass es gibt einen booleschen ändern, wirft es Fehler:
error: 'bool' object is not callable"
Hat jemand das in seiner Arbeit gesehen/gelöst? Danke
Vielen Dank Florent. Allerdings habe ich die vorgeschlagene Änderung (über die Verwendung von .format()) gemacht und ich bekomme immer noch den gleichen Fehler. Ich kann EC.visibility_of_element_located nicht verwenden, da ich die Seite jedes Mal aktualisieren muss, bevor Sie überprüfen, ob das Element in der Liste angezeigt wird. Gibt es eine Möglichkeit, die Seitenaktualisierung zu erzwingen, bevor die Elementsichtbarkeit mithilfe von EC überprüft wird? Wenn ich EC verwende, verschwindet dieser Fehler; Allerdings löst es mein Problem nicht, da das Element manchmal nicht verfügbar ist, wenn die Seite zum ersten Mal aufgerufen wird und mehrere Seitenaktualisierungen benötigt werden. –