2017-07-22 5 views
0

In meiner Anwendung habe ich eine Tabelle mit Benutzern. In meinem Test möchte ich neue Benutzer hinzufügen und dann überprüfen, ob der Benutzer hinzugefügt wird, aber die Tabelle kann mehr als 1 Seite haben, und wenn ich dieses Element suche, kann ich es nur auf der ersten Seite finden. Hier ist mein Code:Selenium Python finden Element auf wenigen Seiten

def test_new_user(driver, username='jared144'): 
login(driver, username="Admin", password="Password") 
# add new user 
add_new_user(driver, username) 
#check if the new user added 
assert is_element_present(driver, By.LINK_TEXT, "%s" % username) 

def add_new_user(driver, username): 
driver.find_element_by_css_selector("[id=btnAdd]").click() 
driver.find_element_by_css_selector("[id=systemUser_employeeName_empName]").send_keys("Adelia Foxy") 
driver.find_element_by_css_selector("[id=systemUser_userName]").send_keys("%s" % username) 
driver.find_element_by_css_selector("[id=systemUser_password]").send_keys("12345678") 
driver.find_element_by_css_selector("[id=systemUser_confirmPassword]").send_keys("12345678") 
driver.find_element_by_css_selector("[id=btnSave]").click() 

def is_element_present(driver, how, what): 
try: 
    driver.find_element(by=how, value=what) 
except NoSuchElementException as e: 
    return False 
return True 

def login(driver, username, password): 
driver.get("http://hrm.seleniumminutes.com/") 
driver.find_element_by_css_selector("[name=txtUsername]").send_keys(username) 
driver.find_element_by_css_selector("[name=txtPassword]").send_keys(password) 
driver.find_element_by_css_selector("[name=Submit]").click() 
driver.find_element_by_css_selector("[id=menu_admin_viewAdminModule]").click() 

Ich habe eine Idee, wie das zu tun, so etwas wie:

if NoSuchElementException 
    find_element_by().click() #click second page 

Aber ich weiß nicht, wie diese

+0

einrücken Code –

+0

Und Ihr Problem ist, dass Sie benötigen –

+0

blättern, es ist nicht zu scrollen, ich dort erste Seite, wenn Element vorhanden überprüfen möge, wenn kein Klick zweite Seite und es überprüfen, ob nicht in Sekunden Seite dann False –

Antwort

0

In Ihrer Ausnahme zu realisieren, Sagen Sie dem Programm, dass Sie auf das Element next page klicken sollen (Sie haben nicht angegeben, wie Sie es gefunden haben). Wenn Sie nach dem Element suchen, mit dem Sie beim Klicken auf die nächste Seite gelangen, öffnen Sie Chrome oder FF und drücken Sie die Taste F12, um den Debugger aufzurufen und nach dem Element auf der Seite zu suchen, um dessen ID, NAME zu erhalten , XPATH (oder eine andere eindeutige Kennung) und klicken Sie dann darauf, wenn Sie es anzeigen. So etwas könnte funktionieren.

def is_element_present(driver, how, what): 
    try: 
     driver.find_element(by=how, value=what) 
     return True 
    except NoSuchElementException as e: 
     try: 
      driver.find_element(by=`xpath`, value=`next page xpath`).click() 
      return True 
     except NoSuchElementException as nse: 
      return False 
Verwandte Themen