与页面的交互
一、获取元素
WebDriver 提供了许多方式来寻找元素,实现与页面的交互。
详细的说,共有以下几种方法:(都是以 find_element_by_ 开头)
- find_element_by_id
- find_element_by_name
- find_element_by_xpath
- find_element_by_link_text
- find_element_by_partial_lind_text
- find_element_by_tag_name
- find_element_by_class_name
- find_element_by_css_selector
这些方法返回的都是第一个匹配到的元素,如果想返回所有匹配的结果
find_element_by_* 改成 find_elements_by_*
上面的方法同时可以通过以下形式表现:
find_element 和 find_elements
具体使用方法
from import By
driver.find_element(By.XPATH, '//*[@id='login']/div/p/li[1]')
以下是 By 类对应的所有查找方式:
ID , XPATH, LINK_TEXT, PARTIAL_LINK_TEXT,NAME,TAG_NAME,CLASS_NAME,CSS_SELECTOR
两种方式对比,只是使用方式不同
第一种方式 | 第二种方式 |
---|---|
*_by_id | By.ID |
*_by_xpath | By.XPATH |
*_by_link_text | By.LINK_TEXT |
... | ... |
二、操作元素
获取元素后,怎么操作呢?
比如说我们想输入文本到文本框中,然后再模拟键盘上回车键:
element.clear()
element.send_keys(' and some')
element.send_keys(' and some', Keys.RETURN)
理论上,我们可以对任何一个元素调用 send_keys,这就允许 Selenium 模拟在浏览器中使用快捷键
三、填充表单
如果表单是单选框,我们可以通过 element.click() 方式直接点击,但是如果表单是多个选项,这个时候,再一个个遍历出来元素,模拟点击操作,就会显得很呆瓜。
WebDriver 提供了 Select 的方法来跟表单进行交互。