selenium2 页面交互
我们比较喜欢做的事情就是和页面交互,准确的说,是和页面里的HTML元素交互。首先,我们要找到一个元素,WebDriver
提供了许多方法查找元素,例如,给定一个这样的元素:
<input type="text" name="passwd" id="passwd-id" />
你可以用下列任意方法找到它:
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']")
你也可以通过文本信息来找到一个链接,但是要注意,文本必须要完全匹配。 在使用XPATH
的时候也要注意,如果有多个元素匹配,只会返回第一个。如果匹配不到任何元素,会抛出一个NoSuchElementException
异常。
WebDriver
有一个 基于对象的 API,我们可以通过同一个接口代表所有类型的元素,这意味着当你敲击你 IDE 的自动补全组合键的时候,虽然你会看到你可以调用很多方法,但不是所有的方法都行得通。不过不要担心!WebDriver
会自己尝试做正确的选择。并且如果你调用一个没用的方法(例如在一个meta
标签上调用setSelected()
),WebDriver
会抛出一个异常。
那么,当你获取到一个元素之后,你可以做些什么呢?首先,你可能会想输入一些文本到一个文本区域:
element.send_keys("some text")
你可以使用Keys类来模拟输入方向键:
element.send_keys(" and some", Keys.ARROW_DOWN)
理论上任意的元素都可以调用send_keys
方法,就是说我们可以测试例如 Gmail 的键盘快捷键。 send_keys
的副作用就是输入文本到文本域不会自动清除,而是会附加到原有的文本后面,我们可以使用clear
方法来很方便的清除文本框或者文本域的内容:
element.clear()
更多建议: