八种元素定位方法及对应的python方法
WebDriver元素定位方式 | 对应的python方法 |
---|---|
id | find_element_by_id() |
name | find_element_by_name() |
class name | find_element_by_class_name() |
tag name | find_element_by_tag_name() |
link text | find_element_by_link_text() |
partial link text | find_element_by_partial_link_text() |
xpath | find_element_by_xpath() |
css selector | find_element_by_css_selector() |
通过id定位
driver.find_element_by_id("kw").send_keys('selenium')
通过name定位
driver.find_element_by_name("wd").send_keys('selenium')
通过class 定位
driver.find_element_by_class_name("s_ipt").send_keys('selenium')
通过tag定位
driver.find_element_by_tag_name("input").send_keys('selenium')
不唯一,故定位不到
通过link定位
driver.find_element_by_link_text("新闻").click()
通过partial link定位
driver.find_element_by_partial_link_text("中国正").click()
通过xpath定位
driver.find_element_by_xpath("//input[@id='kw']").send_keys('selenium')
通过css selector定位
driver.find_element_by_css_selector('#kw').send_keys('selenium')
定位到元素之后,我们能做的事?
get(url):打开某个网页
clear():清除文本
send_keys(value):模拟按键输入,除了能够发送字母外,还可以发送快捷键
click():单击元素。例如按钮、超链接、单选框、复选框
current_url:返回当前页面的url地址
title:返回当前页面的title
Text:获取页面(提示框、警告框)显示的文本
get_attribute(name):获得属性值,文本框中的值使用value属性名
is_displayed():设置该元素是否用户可见
出现的问题:当在打开的页面中点击某一超链接进入新的页面往往定位不到元素
解决方法1:
在新的页面定位元素之前添加下列语句
driver.switch_to_window(driver.window_handles[1]) //[0]为第一个页面,num[1]为新的页面,此时在进行定位操作
解决方法2:
for handle in driver.window_handles:
driver.switch_to_window(handle) //始终获得当前的最后窗口