xpath定位
css样式定位
查找元素方法 by id by className by tagName
设置等待时间
方法1:
import time
time.sleep(3)
方法2:Webdriver对象有个方法叫implicitly_wait
wd=webdriver.Chrome
wd.implicitly_wait(5) #后续代码中所有选择元素的操作都会执
获取属性的值
- element.get_attribute(‘class’)
- 获取整个元素对应的HTML文本内容,可以使用element.get_attribute(‘outerHTML’)
- 只想获取某个元素内部的HTML文本内容,可以使用element.get_attribute(‘innerHTML’)
- 获取输入框里面的文字,可以使用element.get_attribute(‘value’)
- 获取元素文本内容,可以通过WebElement对象的text属性,可以获取元素展示在界面上的文本内容。有时候元素的文本没有展示在界面上或没有完全展示在界面上,可以尝试使用element.get_attribute(‘innerText’),或者element.get_attribute(‘textContent’)
frame切换切换(一个网页里)
在我们使用selenium打开一个网页时,我们的操作范围缺省是当前的html,并不包含被嵌入的html文档里的内容。
如果我们要操作被嵌入的html文档中的元素,就必须切换操作范围到被嵌入的文档中。
- 使用WebDriver对象的switch_to属性,像这样Wd.switch_to.frame(frame_reference)
- 其中frame_reference可以是frame元素的属性name(innerFrame)或者id(frame1).
- 切换到新的frame,比如wd.switch_to.frame(‘frame1’)或者wd.switch_to.frame(‘innerFrame’)
- 切换回去:wd.switch_to.default_content()
浏览器窗口切换(不同网页里)
切换到新的窗口里操作,可以使用WebDriver对象的switch_to属性的window方法
比如wd.switch_to.window(handle),Handle就是对应网页窗口的一个id。
WebDriver对象有window_handles属性,这是一个列表对象,里面包含了当前浏览器里面所有的窗口句柄。
代码如下
for handle in window_handles: #先切换到该窗口 wd.switch_to.window(handle) #wd.title得到该窗口的标题栏字符串,判断是不是我们要操作的那个窗口 If “必应” in wd.title: #如果是,那么这时候跳出循环,此时的WebDriver对象就是对应的该窗口 break;
#mainWindow变量保存当前窗口的句柄
mainWindow=wd.current_window_handle
切换到新窗口并且操作完之后,可以通过前面保存的老窗口句柄,将driver对应的对象直接返回到原窗口
wd.switch_to.window(mainWindow)
radio框
代码如下
#获取当前选中的元素 element=wd.find_element_by_css_selector(‘#s_radio input[checked=”checked”]’) print(‘当前选中的是:’+element.get_attribute(‘value’)) #点选小雷老师 wd.find_element_by_css_selector(‘#s_radio input[value=”小雷老师”]’).click() print(‘现在选中的是:’+element.get_attribute(‘value’))
checkbox框
代码如下
#先把已经选中的选项全部点击一下 elements=wd.find_elements_by_css_selector(‘#s_checkbox input[checked=”checked”]’) for element in elements: element.click() #点击小雷老师 wd.find_element_by_css_selector(‘#s_checkbox input[value=”小雷老师”]’).click()
selector框