selenium 使用方法
第一点 调用浏览器
from selenium import webdriver
driver = webdriver.Chrome()
第二点 API
第三点 8种元素定位方法
面试题:如果元素定位不到,是有哪些原因?1.元素没有加载完成
2.Frame中
3.元素不可以用,不可见,不可读
4.动态属性div层
元素名称 | API |
---|---|
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() |
第四点 Xpath定位
绝对路径
/html/body/div[1]/div[2]/div[5]/div[1]/div/form/span[2]/input
相对路径+索引定位
//form/span[2]/input
相对路径+属性定位
//input[@id='su']
相对路径+通配符定位 *
//[@='su']
相对路径+部分属性值定位
//[starts-with(@id, 'su')]
//[substring(@id, 2)='su'] #结尾
//*[contain(@id,'su')] #包含
相对路径加文本定位
//input[text()='百度一下']
第五点 元素操作方式
第6点 鼠标事件
第7点 键盘事件
第8点 多窗口
driver.window_handles
driver.current_window_handle
driver.switch_window(driver.window_handles[0])
第九点 下拉框处理
执行下拉框操作前,需要实例化Select
sel = Select(driver.find_element_by_xpath('//input[@id='su']))
第十点 浏览器弹框处理
alert、confirm、prompt
元素名称 | 简述 |
---|---|
switch_to_alert() | 跳转到弹框 |
accept() | 接受 |
dismiss | 取消 |
send_keys() | 输入文字(前提有输入框才能使用) |
text() | 获取弹框上面的文字 |
第十一点 等待
强制等待 Sleep(10)
隐式等待 implicitly_wait(10)
显示等待 WebDriverWait(10)
WebDriverWait(driver, 超时时长, 调用频率, 忽略异常).until(可执行方法, 超时时返回的信息)
https://blog.csdn.net/huilan_same/article/details/52544521
第十二点 文件上传
send_keys('绝对路径')
第十三点 flash上传&文件下载
flash上传
借助其他工具PC自动化类\autoIT\Python pywin32\SendKeys\keybd_event
文件下载
需要配置Profile文件内容
Firefox
from selenium import webdriver
from time import sleep
profile = webdriver.FirefoxProfile()
profile.set_preference('browser.download.dir', 'd:\\')
profile.set_preference('browser.download.folderList', 2) #0为下载到桌面
profile.set_preference('browser.download.manager.showWhenStarting', False) #不显示进度条
profile.set_preference('browser.helperApps.neverAsk.saveToDisk', 'application/zip')
driver = webdriver.Firefox(firefox_profile=profile)
driver.get('http://sahitest.com/demo/saveAs.htm')
driver.find_element_by_xpath('//a[text()="testsaveas.zip"]').click()
sleep(3)
driver.quit()
Chrome
from selenium import webdriver
from time import sleep
options = webdriver.ChromeOptions()
prefs = {'profile.default_content_settings.popups': 0, 'download.default_directory': 'd:\\'}
options.add_experimental_option('prefs', prefs)
driver = webdriver.Chrome(executable_path='D:\\chromedriver.exe', chrome_options=options)
driver.get('http://sahitest.com/demo/saveAs.htm')
driver.find_element_by_xpath('//a[text()="testsaveas.zip"]').click()
sleep(3)
driver.quit()
第十四点 滚动条
js = 'document.getElementsByClassName('scroll')[0].scrollTop=0'
driver.execute_script(js)
document.getElementsByClassName("scroll")[0].scrollHeight # 获取滚动条高度
document.getElementsByClassName("scroll")[0].scrollWidth # 获取横向滚动条宽度
document.getElementsByClassName("scroll")[0].scrollLeft=xxx # 控制横向滚动条位置