Selenium Python在几页上找到元素

时间:2017-07-22 13:51:38

标签: python selenium if-statement nosuchelementexception

在我的应用程序中,我有一个用户表。在我的测试中,我想添加新用户,然后检查是否添加了用户,但该表可以有超过1页,当我正在查找该元素时,我可以在第一页上找到它。 这是我的代码:

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()

我知道如何做到这一点,例如:

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

但我不知道如何实现这个

1 个答案:

答案 0 :(得分:0)

在您的例外情况下,请告诉程序点击<Popup Name="popMessage" StaysOpen="True" IsOpen="{Binding IsPopupOpen}" HorizontalAlignment="Center" PlacementTarget="{Binding ElementName=pnlTopMenu}" Placement="Bottom" PopupAnimation="Scroll" AllowsTransparency="True"> <Border CornerRadius="0,0,10,10" HorizontalAlignment="Center" BorderBrush="DarkBlue" BorderThickness="1" Background="AntiqueWhite"> <StackPanel Orientation="Horizontal" HorizontalAlignment="Center"> <Image Source="./Resources/Info_48.png" Height="20"/> <TextBlock Width="90" VerticalAlignment="Center" HorizontalAlignment="Left" Background="Transparent" FontSize="12">This is a Popup</TextBlock> </StackPanel> </Border> </Popup> 元素(您没有说明如何找到它)。如果您的问题是如何找到单击时将转到下一页的元素,请打开Chrome或FF并按next page键调出调试器,然后在页面上搜索元素,获取其ID,NAME,XPATH(或其他唯一标识符),然后在显示时单击它。所以这样的事情可能有用。

F12