8种元素定位的方法
- ID是在页面上定位元素的首选方法,工作速度非常快,避免复杂的DOM遍历
- XPath语法很复杂,并且经常很难调试,未经过浏览器厂商的性能测试,并且运行速度很慢
- 基于链接文本和部分链接文本的选择策略有其缺点,即只能对链接元素起作用
- 标签名定位元素的方法,在调用findElements(By)方法返回元素集合时非常有用
方法名称 | Python代码 | 描述 |
---|---|---|
id | find_element_by_id() | 定位id属性与搜索值匹配的元素 |
name | find_element_by_name() | 定位name属性与搜索值匹配的元素 |
tag | find_element_by_tag_name() | 定位标签名称与搜索值匹配的元素 |
class | find_element_by_class_name() | 定位类名称中包含搜索值的元素(不能使用复合类名) |
link text | find_element_by_link_text() | 定位其可视文本与搜索值匹配的锚元素 |
xpath | find_element_by_xpath() | 定位与XPath表达式匹配的元素 |
css selector | find_element_by_css_selector() | 定位与CSS选择器匹配的元素 |
定位元素
WebDriver中定位元素是在WebDriver实例对象(driver)上完成的
-
find_element_by方法返回另一个基本对象类型WebElement
- WebDriver代表浏览器
- WebElement表示特点的DOM节点(控件,例如链接或输入栏等)
-
代码
-
WebDriver实例
driver = webdriver.Chrome()
-
跳转链接
driver.get("http://cn.bing.com")
-
定位方法(单元素)
driver.find_element_by_id("sb_form_q")
-
定位方法(多元素)
dirver.find_element_by_css_selector("#cheese li")
-
设置元素文本
-
使用sendKeys方法设置元素的文本
driver.find_element_by_id("sb_form_q").send_keys("Selenium")