1,元素的定位
不仅 WebDriver对象有 选择元素 的方法, WebElement对象 也有选择元素的方法。
WebElement对象 也可以调用 find_elements_by_xxx, find_element_by_xxx 之类的方法
WebDriver 对象 选择元素的范围是 整个 web页面, 而
WebElement 对象 选择元素的范围是 该元素的内部。
1.1css选择器
1.2xpath选择器
绝对路径:从根节点开始的,到某个节点,每层都依次写下来,每层之间用 / 分隔的表达式,就是某元素的 绝对路径
相对路径:用//表示从当前节点往下寻找所有的后代元素
通配符:是一个通配符,对应任意节点名的元素,如果要选择所有div节点的所有直接子节点,可以使用表达式 //div/
根据属性选择:格式为:[@属性名=‘属性值’],例如//div/[@id=‘list’]
按次序选择:
子元素:要选择p元素下所有的第2个子元素,就是//p/*[2]
要选择 p类型第2个的子元素,就是//p[2]
要选择p类型倒数第2个子元素,就是//p[last()-1]
选取option类型前3个子元素,就是//option[position()<=3]
组选择:可以用竖线表示| 比如,要选所有的option元素 和所有的 h4 元素,可以使用 //option | //h4
父节点:用/…表示
兄弟节点选择:
后续兄弟节点语法表示: following-sibling::
前面兄弟节点语法表示: preceding-sibling::
2,等待界面元素出现
2.1Selenium 的 Webdriver 对象 有个方法叫 implicitly_wait
该方法接受一个参数, 用来指定 最大等待时长。
2.2 sleep固定时间等待
from time import sleep
3.操控元素的方法
3.1 按钮
点击:元素对象.click()
3.2输入框
输入:元素对象.send_keys()
清除:元素对象.clear()
3.3获取元素信息
获取元素的属性:element.get_attribute(‘属性值’)
获取元素对应的html文本:element.get_attribute(‘outerHTML’)
获取元素里面的html文本:element.get_attribute(‘interHTML’)
获取元素的文本信息:element.text
有时候元素的信息没有或者没有全部显示在界面上,text属性可能获取不到正确的内容,可以使用element.get_attribute(‘innerText’)或者element.get_attribute(‘textContent’)
获取输入框中的文本信息:element.get_attribute(‘value’)
3.4退出浏览器:webdriver.quit()
3.5iframe中的元素:iframe是内嵌的HTML,所以需要使用 WebDriver 对象的 switch_to 属性,例如:wd.switch_to.frame(frame属性)
切换回主HTML:使用wd的方法. switch_to.default_content()可以切换回主HTML
3.6切换Windows窗口:使用swtich_to.windows的方法,:wd.switch_to.window(handle)。handle参数为每个窗口的句柄。使用类似下列的代码:
for handle in wd.window_handles:
wd.switch_to.window(handle)
if ' Bing’ in wd.title:
break
意思为我们依次获取 wd.window_handles 里面的所有 句柄 对象, 并且调用 wd.switch_to.window(handle) 方法,切入到每个窗口,然后检查里面该窗口对象的属性(可以是标题栏,地址栏),判断是不是我们要操作的那个窗口,如果是,就跳出循环。
切换为原来的窗口:可以在切换到新窗口前保留原窗口的句柄 wd.current_window_handle
例: mainWindow = wd.current_window_handle
切换mainWindow时,wd.swtich_to.window(mainWindow)