Web自动化之常用页面操作
(1)定位元素(点此查看)
(2)输入内容(先定位元素(输入框),然后使用.send_keys()输入内容)
[Python] 纯文本查看 复制代码 from selenium.webdriver.support.wait import WebDriverWait #导入WebDriverWait
from selenium import webdriver
from selenium.webdriver.common.by import By
import time
driver = webdriver.Edge() #初始化一个Edge浏览器对象
driver.maximize_window() #全屏显示
driver.implicitly_wait(30) #隐式等待30秒
wait = WebDriverWait(driver,20) #显式等待20秒
driver.get('http://192.168.68.8/') #打开网站(这里以Honor Pro2路由器管理页面为例)
login_info_password = driver.find_element(By.XPATH,"//*[@class = 'inputArea paddingleft_14']") #通过xpath定位密码输入框
login_info_password.send_keys('HonPro2@Ltxit.com') #向上面定位到的密码输入框中输入登录密码
login_info_button = driver.find_element(By.XPATH,"//*[@class = 'enter marginleft_290 login_leader_border']") #通过xpath定位登录按钮
login_info_button.click() #点击上面定位到的登录按钮
time.sleep(300)
(3)清空输入内容(clear())
[Python] 纯文本查看 复制代码 login_info_password.clear() #清空输入内容
(4)点击元素(先定位元素(按钮),然后使用.click())
[Python] 纯文本查看 复制代码 login_info_button = driver.find_element(By.XPATH,"//*[@class = 'enter marginleft_290 login_leader_border']") #通过xpath定位登录按钮
login_info_button.click() #点击上面定位到的登录按钮
(5)刷新浏览器页面(driver.refresh())
[Python] 纯文本查看 复制代码 driver.refresh() #刷新浏览器页面
(6)全屏显示(driver.maximize_window())
[Python] 纯文本查看 复制代码 driver.maximize_window() #全屏显示
(7)自定义调整屏幕显示大小(driver.set_window_size(width = XXX,height =XXX))
[Python] 纯文本查看 复制代码 driver.set_window_size(width = 888,height = 999) #自定义调整屏幕显示大小
(8)前进(driver.forward())
[Python] 纯文本查看 复制代码 driver.forward() #前进
(9)后退(driver.back())
[Python] 纯文本查看 复制代码 driver.back() #后退
(10)获取网页URL(driver.current_url)
[Python] 纯文本查看 复制代码 url = driver.current_url #获取网页URL
print(url)
(11)获取网页标题(driver.title)
[Python] 纯文本查看 复制代码 title = driver.title #获取网页标题
print(title)
(12)查询浏览器当前所有的窗口(标签)(driver.window_handles)
[Python] 纯文本查看 复制代码 print(driver.window_handles) #查询浏览器当前所有的窗口(标签),返回的是列表,列表里的元素是当前浏览器所有窗口(标签)的名称
(13)查询浏览器当前所在的窗口(标签)(driver.current_window_handle)
[Python] 纯文本查看 复制代码 print(driver.current_window_handle) #查询浏览器当前所在的窗口(标签),返回的是当前浏览器窗口名称的字符串
(14)切换窗口(标签)(driver.switch_to.window(window_name)
[Python] 纯文本查看 复制代码 driver.switch_to.window(window_name) #window_name为需要切换的窗口(标签)的名称
(15)切换到最新窗口(标签)(driver.switch_to.window(driver.window_handles[-1))
[Python] 纯文本查看 复制代码 driver.switch_to.window(driver.window_handles[-1]) #切换到最新窗口(标签)
(16)切换iframe(driver.switch_to.frame(frame_reference))
[Python] 纯文本查看 复制代码 driver.switch_to.frame(frame_reference)#frame_reference为要切换到的窗口的名称或索引,或者是要切换到的框架的Web元素。
例如:
driver.switch_to.frame('frame_name')
driver.switch_to.frame(1)
driver.switch_to.frame(driver.find_elements_by_tag_name("iframe")[0])
(17)退回到主页面(driver.switch_to.default_content())
[Python] 纯文本查看 复制代码 driver.switch_to.default_content() #退回到主页面
(18)退回上级页面(driver.switch_to.parent_frame())(一般用于有多级嵌套的页面)
[Python] 纯文本查看 复制代码 driver.switch_to.parent_frame() #退回到上级页面
(19)切换到alert(driver.switch_to.alert)
[Python] 纯文本查看 复制代码 alert = driver.switch_to.alert #切换到alert
(20)切换回主页面(alert.accept()/alert.dismiss())
[Python] 纯文本查看 复制代码 alert.accept() #切换回主页面(点击【确定】按钮回到主页面)
alert.dismiss() #切换回主页面(点击【取消】按钮回到主页面)
(21)截屏保存(driver.save_screenshot('xxx.png'))
[Python] 纯文本查看 复制代码 driver.save_screenshot('ltxit.png') #截屏保存
(22)选择下拉框的选项
①通过元素定位找到要选择的选项,然后调用点击(clickf())方法进行选择
[Python] 纯文本查看 复制代码 driver.find_element_by_xpath("//option[@value = '6']").click() #元素定位然后调用clickf()方法进行选择
②通过Select类里面的select_by_value方法进行选择
[Python] 纯文本查看 复制代码 from selenium.webdriver.support.ui import Select #导入Select类
questionid = driver.find_element_by_xpath("//select[@id = 'questionid']") #定位元素(下拉框)
select = Select(questionid) #创建一个Select对象
select.select_by_value('6') #通过value选择下拉框选项
Select(driver.find_element_by_xpath("//select[@id = 'questionid']")).select_by_value('6') #将上述四行代码合并写法
③通过Select类里面的select_by_index方法进行选择
[Python] 纯文本查看 复制代码 from selenium.webdriver.support.ui import Select #导入Select类
questionid = driver.find_element_by_xpath("//select[@id = 'questionid']") #定位元素(下拉框)
select = Select(questionid) #创建一个Select对象
select.select_by_index('5') #通过index(索引)选择下拉框选项
Select(driver.find_element_by_xpath("//select[@id = 'questionid']")).select_by_index('5') #将上述四行代码合并写法
④通过Select类里面的select_by_visible_text方法进行选择
[Python] 纯文本查看 复制代码 from selenium.webdriver.support.ui import Select #导入Select类
questionid = driver.find_element_by_xpath("//select[@id = 'questionid']") #定位元素(下拉框)
select = Select(questionid) #创建一个Select对象
select.select_by_visible_text('父亲出生的城市') #通过text(选项文本)选择下拉框选项
Select(driver.find_element_by_xpath("//select[@id = 'questionid']")).select_by_visible_text('父亲出生的城市') #将上述四行代码合并写法
(23)关闭标签(driver.close())
[Python] 纯文本查看 复制代码 driver.close() #关闭标签
(24)退出浏览器(driver.quit())
[Python] 纯文本查看 复制代码 driver.quit() #退出浏览器
Web自动化之等待
(1)强制等待(time.sleep())
[Python] 纯文本查看 复制代码 import time #导入time
time.sleep(X) #强制等待X秒
(2)隐式等待(driver.implicitly_wait(xx))---只能用于发现元素
[Python] 纯文本查看 复制代码 driver.implicitly_wait(30) #隐式等待30秒
①一个浏览器对象只需要使用一次
②在设定时间内查找元素
③在设定时间内出现查找的元素就不再继续等,直接进行下一步
④在设定时间内没有出现就报错
(3)显式等待(WebDriverWait(driver,???).until(EC.xxx(("yyy","zzz"))))
[Python] 纯文本查看 复制代码 from selenium.webdriver.support.wait import WebDriverWait #导入WebDriverWait
#WebDriverWait(driver, timeout, poll_frequency=POLL_FREQUENCY, ignored_exceptions=None)
#driver:浏览器对象
#timeout:超时时间
#poll_frequency=POLL_FREQUENCY:轮询时间(默认0.5秒)
#ignored_exceptions=None:一般不用管
wait = WebDriverWait(driver,20) #显式等待20秒
from selenium.webdriver.support import expected_conditions as EC #导入expected_conditions并取个别名EC
wait.until(EC.element_to_be_clickable(("xpath","//button[@type = 'submit'][@tabindex = '904']")))
#EC(expected_conditions)是预期条件(元素是否出现/元素是否可见/元素是否可点击等)
#element_to_be_clickable(locator)
#locator是一个定位器,用元祖表示,元祖的第一个元素是定位的方式(通过id定位/通过xpath定位等),元祖的第二个元素是定位的表达式
常见预期条件:
[Python] 纯文本查看 复制代码 element_to_be_clickable:页面元素可见且可以点击
[Python] 纯文本查看 复制代码 presence_of_element_located:页面是否存在某个元素,这不一定意味着该元素是可见的。
[Python] 纯文本查看 复制代码 visibility_of_element_located:页面元素是否存在并且可见
[Python] 纯文本查看 复制代码 presence_of_all_elements_located:页面是否至少存在1个元素
[Python] 纯文本查看 复制代码 visibility_of_any_elements_located:页面是否至少存在1个可见的元素
[Python] 纯文本查看 复制代码 visibility_of_all_elements_located:页面是否所有元素都存在并且可见
[Python] 纯文本查看 复制代码 invisibility_of_element_located:页面元素是否不存在或不可见
[Python] 纯文本查看 复制代码 alert_is_present:页面是否有alert(警告弹框)
[Python] 纯文本查看 复制代码 frame_to_be_available_and_switch_to_it:是否可以切换到iframe
[Python] 纯文本查看 复制代码 new_window_is_opened:是否可以切换窗口(标签)
|