selenium 使用方法
第一点 调用浏览器
from selenium import webdriver
driver = webdriver.Chrome()
第二点 API
第三点 8种元素定位方法
面试题:如果元素定位不到,是有哪些原因?1.元素没有加载完成
2.Frame中
3.元素不可以用,不可见,不可读
4.动态属性div层
元素名称 | API |
---|---|
id@H_404_29@ | find_element_by_id()@H_404_29@ |
name@H_404_29@ | find_element_by_name()@H_404_29@ |
class_name@H_404_29@ | find_element_by_class_name()@H_404_29@ |
tag_name@H_404_29@ | find_element_by_tag_name()@H_404_29@ |
link text@H_404_29@ | find_element_by_link_text()@H_404_29@ |
partial link text@H_404_29@ | find_element_by_partial_link_text()@H_404_29@ |
xpath@H_404_29@ | find_element_by_xpath()@H_404_29@ |
css selector@H_404_29@ | find_element_by_css_selector()@H_404_29@ |
第四点 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()@H_404_29@ | 跳转到弹框@H_404_29@ |
accept()@H_404_29@ | 接受@H_404_29@ |
dismiss@H_404_29@ | 取消@H_404_29@ |
send_keys()@H_404_29@ | 输入文字(前提有输入框才能使用)@H_404_29@ |
text()@H_404_29@ | 获取弹框上面的文字@H_404_29@ |
第十一点 等待
强制等待 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
文件下载
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 # 控制横向滚动条位置
第十五点 邮件SMTP
https://www.cnblogs.com/cirr-zhou/p/8920622.html版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。