Selenium之webdriverAPI
1.py文件webdriverAPI
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains ##鼠标操作
from selenium.webdriver.support.select import Select ####Select模块
driver = webdriver.Chrome()
driver.get(‘http://ui.imdsx.cn/uitester/‘) ###
import time
time.sleep(1)
driver.execute_script(‘window.scrollTo(0,0);‘)
time.sleep(1)
# print(driver.window_handles)
# el = driver.find_element_by_css_selector(‘[href="/new-index/"]‘)
# el.click()
# print(driver.window_handles)
# 获取全部tag的标签名
# handles = driver.window_handles
# driver.switch_to_window(handles[1])
# driver.switch_to.window(handles[1])
#
# driver.find_element_by_css_selector(‘#newtag‘).send_keys(‘xxxx‘)
# 退出驱动
# driver.quit()
# # 关闭页面 关闭时如果指针切换了 必须手动切回来 不会默认切回来
# driver.close()
# driver.switch_to.window(handles[0])
# driver.find_element_by_css_selector(‘#i1‘).send_keys(‘xxxx‘)
多层html
# name = top-frame
# 如果iframe有name属性 或 id属性则 可以直接在frame种填写
Iframe中通过src可以嵌套html
# driver.switch_to.frame(eleObj) # top-frame
# # driver.switch_to.frame(‘top-frame‘)
# import time
# time.sleep(2)
# 如果没有name和id属性 frame() 可以接受elementOBj
# eleObj = driver.find_element_by_css_selector(‘[src="/new-index/"]‘)
# # 切换到 top-frame
# # 输入newtag文案
# driver.find_element_by_css_selector(‘#newtag‘).send_keys(‘xxxx‘)
# # 切换到百度frame
# driver.switch_to.frame(‘baidu-frame‘)
# time.sleep(2)
# # 输入文案
# driver.find_element_by_css_selector(‘#kw‘).send_keys(‘xxxx‘)
# # 返回到你的上一层
# driver.switch_to.parent_frame()
# # 清空input的数据
# driver.find_element_by_css_selector(‘#newtag‘).clear()
# # 在进入百度的frame
# driver.switch_to.frame(‘baidu-frame‘)
# # 在清除百度的输入
# driver.find_element_by_css_selector(‘#kw‘).clear()
# # 返回到最外层
# driver.switch_to.default_content()
# driver.find_element_by_css_selector(‘#i1‘).send_keys(‘xxxxxx‘)
# 最大化浏览器
# driver.maximize_window()
# driver.find_element_by_link_text(‘跳转大师兄博客地址‘).click()
# #浏览器的后退键
# driver.back()
# # 浏览器的前进按钮
# driver.forward()
# # 浏览器的刷新按钮
# driver.refresh()
# 获取当前浏览器的大小
# print(driver.get_window_size())
# # 设置浏览器的大小
# driver.set_window_size(100,100)
# 截图
# driver.get_screenshot_as_file(‘pngdemo.png‘)
系统级别的弹出框
# driver.find_element_by_css_selector(‘#alert‘).click()
# # alert处理
# print(driver.switch_to.alert.text) ##弹框文本
# driver.switch_to.alert.accept() #确认
# driver.switch_to.alert.dismiss() # 取消
悬浮显示
# el = driver.find_element_by_css_selector(‘#dis1‘)
# # 判断元素是否在页面上展示
# print(el.is_displayed())
# # 暂时让按钮显示出来
# driver.execute_script("document.getElementById(‘dis1‘).style.display=‘‘;")
# print(el.is_displayed())
# driver.find_element_by_css_selector(‘#dis1‘).click()
# 鼠标操作
# 获取要悬浮的元素
# el = driver.find_element_by_css_selector(‘#a‘)
# dis1 = driver.find_element_by_css_selector(‘#dis1‘)
# # 鼠标操作 链式变成
# ActionChains(driver).move_to_element(el).click(dis1).perform() ###实例化 先移动再点击 perform() 执行
拼图 鼠标拖拽
# source = driver.find_element_by_css_selector(‘#dragger‘)
# target = driver.find_element_by_css_selector(‘#i1‘)
# ActionChains(driver).drag_and_drop(source,target).perform() ###鼠标拖拽
也可以使用click_and_hold()
release()
可多次书写最后执行
select 下拉框
# 实例化select 接受一个select标签 如果不是select标签则抛异常
# select = driver.find_element_by_xpath(‘//select[1]‘)
# # 获取标签是option的元素
# eles = select.find_elements_by_tag_name(‘option‘)
# for opt in eles:
# print(opt.get_attribute(‘value‘)) 获取vlaue属性(1.2.3.4)
# # 通过select标签的option中的value字段定位
# Select(select).select_by_value(‘4‘)
# # 一个标签中如果还要子集 可以在继续在这个标签的基础上进行find
# Select(select).select_by_index(3)
# 等待
# 第一种就是time.sleep() 这种是最low的
# 隐士等待 driver.implicitly_wait(10) 基本不用
# 显示等待
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
# WebDriverWait(driver,10,0.5).until(EC.visibility_of_element_located((By.ID,‘i1‘)))
ele =WebDriverWait(driver,60,5).until(EC.presence_of_element_located((By.ID,‘i11‘)))
ele.send_keys(‘xxxxx‘)
css = ‘css=>#i1‘
get_element(css)
原文:https://www.cnblogs.com/cslw5566/p/9297299.html