你可以使用以下方法去找到这个元素:
Element = driver.find_element_by_id(“passwd_id”)
Element = driver.find_element_by_name(“passwd”)
Element = driver.find_element_by_xpath(“/input[@id=’passwd-id’]”)
还可以通过文字找到一个链接,但是要小心!这个文字必须是完全匹配!在WebDriver里使用XPATH也要小心。 如果有多个元素满足查询,将只有第一个满足条件的被返回。如果没有发现任何元素,将会报NoSuchElementException。
WebDriver 有一个基于对象的API。我们使用相同的接口来代表各种元素。这意味着在使用IDE的自动完成功能的时候,你或许看到很多可以调用的方法。但是不是所有的都行得通或者可行。但是无需担心!WebDriver将试图去做正确的事情,而且如果你调用了一个行不通的方法,会抛出一个异常。
你得到了一个元素,你能做什么呢?首先,你也许想在输入框中输入一段文字。
Element.send_keys(“some text”)
你可以通过Keys类模仿按箭头键
Element.send_keys(“and some”, Keys.ARROW_DOWN)
在任意元素上都是可以调用send_keys的,这使得测试键盘快捷键比如用在Gmail上的,成为可能。一个副作用是在输入框中输入字符将不会自动清空。反而,你输入的将会被添加在已有文本之后。你可以很容易使用clear方法清空输入框或输入区域的内容。
Element.clear()
3.2 填充表单
我们已经看到如何在输入框里输入字符,但是,其他元素呢?你可以选择选择框的状态,你可以使用setSelected来设置比如选项标签为选中状态。处理SELECT选项并不是太坏。
Select = driver.find_element_by_xpath(“//select”)
All_options = select.find_element_by_tag_name(“option”)
For option in all_options:
Print “value is: %s” %option.get_attribute(“value”)
Option.click()
这将会发现页面上第一个SELECT元素,然后循环通过每一根的OPTION,打印出他们的值,然后依次选中每个。
当你完成填充表单之后,你也许想提交它。一个办法是找到submit按钮并点击它。
# Assume the button has the ID “submit”
Driver.find_element_by_id(‘submit’).click()
或者,WebDriver在每个元素上都有很方便的submit方法。如果你在一个form的元素上调用这个方法,WebDriver将会查询DOM树,直至发现包含它的form然后调用submit。如果元素没有在form里面,将会抛出NoSuchElementExcellent
Element.submit()
3.3 托和拽
Element = driver.find_element_by_name(“source”)
Target = driver.find_element_by_name(“target”)
From selenium.webdriver import ActionChains
Action_chains = ActionChains(driver)
Action_chains.drag_and_drop(element, target)
3.4 在窗口和帧之间移动
在现在的web应用中很少窗口里没有任何帧。WebDriver支持使用switch_to_window方法在命名窗口里移动。
Driver.switch_to_window(“windowName”)
所有对driver的调用现在都被解释为直接到特定的窗口。但是如何知道窗口的名字?看一下打开窗口的javascript或者链接。
Click here to open a new window
作为选择,你可以传一个窗口句柄给switch_to_window()方法。知道这个,就可以再每个打开的窗口之间迭代访问
For handle in driver.window_handlers:
Driver.switch_to_window(handle)
也可以在帧之间切换
Driver.switch_to_frame(“frameName”)
也可以通过用点分解路径访问子帧,可以通过指定index来确定帧。
Driver.switch_to_frame(frameName.0.child)
3.7 Cookies
Driver.get(“http://www.example.com”)
# Now set the cookie. This one is valid for the entire domain
Cookie = {“key”: “value”}
Driver.add_cookie(cookie)
# And now output all the available cookies for the current URL
All_cookies = driver.get_cookies()
For cookie_name, cookie_value in all_cookies.items():
Print “%s -> %s”, cookie_name, cookie_value