Selenium使用方法整理

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 # 控制横向滚动条位置

第十五点 邮件SMTP

https://www.cnblogs.com/cirr-zhou/p/8920622.html
posted @ 2022-01-24 19:55  是超级可爱的小姚童鞋  阅读(122)  评论(0编辑  收藏  举报