基本页面元素操作
基本页面元素操作
1. 获取浏览器及页面相关信息
2. 获取浏览器及页面相关信息
3. 浏览器页面相关信息获取
4. 页面滚动js操作
5. 文本输入
6. 鼠标事件键盘事件(删除粘贴复制)
7. 对下拉框的操作/列表遍历操作
8. 多窗口切换/页面
9. 警告框处理
# -*- coding: utf-8 -*-
"""
@Time : 2021/5/26 14:15
@Auth :
@Email :
@File : Lab5.py
@Description : selenium基本元素操作使用.fun1-fun9:获取浏览器及页面相关信息,浏览器页面相关信息获取,页面滚动js操作,文本输入,鼠标事件键盘事件(删除粘贴复制),对下拉框的操作/列表遍历操作,多窗口切换/页面,警告框处理
"""
#encoding=utf-8
from selenium import webdriver
import time
from selenium.webdriver.common.action_chains import ActionChains
# 引入 Keys 模块
from selenium.webdriver.common.keys import Keys
def fun1():
'''
获取浏览器及页面相关信息
:return:
'''
driver=webdriver.Firefox()
firstURL="http://www.sogou.com"
driver.get(firstURL)
#获取浏览器名称
cu_name=driver.name
#获取当前页面的 url 地址
cu_url=driver.current_url
# 获取当前页面标题
cu_title=driver.title
#获取当前页面源代码
cu_html=driver.page_source
#获取当前窗口句柄
cu_handle=driver.current_window_handle
print("浏览器是:{},URL 是:{},网页 title 是:{}".format(cu_name,cu_url,cu_title))
print("网页内容是:\n")
#print(cu_html)
print("当前窗口句柄:{}".format(cu_handle))
time.sleep(2)
driver.quit()
def fun2():
'''
浏览器页面相关信息获取
:return:
'''
driver = webdriver.Firefox()
driver.implicitly_wait(1)
first_url = "http://www.baidu.com/"
driver.get(first_url)
time.sleep(3)
# 设置浏览器大小
driver.set_window_size(800, 800)
# 设置浏览器最大化
time.sleep(3)
driver.maximize_window()
time.sleep(3)
# 访问第二个页面
second_url = 'http://news.baidu.com/'
driver.get(second_url)
time.sleep(3)
# 返回(后退)到百度首页
print("back to %s" % first_url) # back to http://www.baidu.com/
driver.back()
time.sleep(3)
# 前进到新闻页
print("forward to %s" % second_url) # forward to http://news.baidu.com/
time.sleep(3)
driver.forward()
time.sleep(3)
driver.refresh()
time.sleep(3)
driver.quit()
def fun3():
'''
页面滚动js操作
:return:
'''
driver = webdriver.Firefox()
driver.implicitly_wait(1)
url = "http://news.baidu.com/"
try:
driver.get(url)
driver.set_window_size(800, 600)
time.sleep(3)
# 将页面的滚动条水平滑动到指定位置
js = 'window.scrollTo(600,0)'
driver.execute_script(js)
time.sleep(3)
# 将页面的滚动条垂直滑动到指定位置
js = 'window.scrollTo(0,800)'
driver.execute_script(js)
time.sleep(3)
# 将页面的滚动条滑动到指定位置
js = 'window.scrollTo(100,100)'
driver.execute_script(js)
time.sleep(3)
# 将页面的滚动条垂直滑动到相对位置
js = 'window.scrollBy(0,300)'
driver.execute_script(js)
time.sleep(3)
except Exception as e:
print(e)
print("error")
finally:
driver.quit()
def fun4():
'''
文本输入
:return:
'''
driver = webdriver.Firefox()
driver.implicitly_wait(1)
url = "https://www.baidu.com"
driver.get(url)
driver.find_element_by_id("kw").clear()
time.sleep(3)
driver.find_element_by_id("kw").send_keys("unittest")
time.sleep(3)
driver.find_element_by_id("su").click()
time.sleep(5)
driver.quit()
def fun5():
'''
鼠标事件
:return:
'''
driver = webdriver.Firefox()
driver.implicitly_wait(1)
url = "https://www.baidu.com"
driver.get(url)
driver.maximize_window()
time.sleep(2)
element1 = driver.find_element_by_xpath(".//*[@id='su']")
ActionChains(driver).move_to_element(element1).perform()
time.sleep(5)
# 右击 context_click()
ActionChains(driver).context_click(element1).perform()
time.sleep(5)
# 双击 double_click()
ActionChains(driver).double_click(element1).perform()
time.sleep(5)
# 拖动 drag_and_drop()
# 定位元素的源位置
element = driver.find_element_by_link_text("新闻")
# 定位元素要移动到的目标位置
target = driver.find_element_by_id("kw")
# 执行元素的拖放操作
ActionChains(driver).drag_and_drop(element, target).perform()
time.sleep(3)
driver.find_element_by_id("su").click()
driver.quit()
def fun6():
'''
键盘事件(删除粘贴复制)
:return:
'''
driver = webdriver.Firefox()
driver.get("http://www.baidu.com")
time.sleep(3)
# 输入框输入内容
driver.find_element_by_id("kw").send_keys("seleniumm")
# 删除多输入的一个 m
time.sleep(3)
driver.find_element_by_id("kw").send_keys(Keys.BACK_SPACE)
# 输入空格键+“教程”
time.sleep(3)
driver.find_element_by_id("kw").send_keys(Keys.SPACE)
time.sleep(3)
driver.find_element_by_id("kw").send_keys("教程")
time.sleep(3)
# ctrl+a 全选输入框内容
driver.find_element_by_id("kw").send_keys(Keys.CONTROL, 'a')
time.sleep(3)
# ctrl+x 剪切输入框内容
driver.find_element_by_id("kw").send_keys(Keys.CONTROL, 'x')
time.sleep(3)
# ctrl+v 粘贴内容到输入框
driver.find_element_by_id("kw").send_keys(Keys.CONTROL, 'v')
time.sleep(3)
# 通过回车键盘来代替点击操作
driver.find_element_by_id("su").send_keys(Keys.ENTER)
time.sleep(3)
driver.quit()
def fun7():
'''
对下拉框的操作/列表遍历操作
:return:
'''
driver = webdriver.Firefox()
driver.implicitly_wait(30)
driver.maximize_window()
driver.get("file://E://Lab//Selenium//untitled//resource//select.html")
# 遍历所有选项
select = driver.find_element_by_name("fruit")
all_options = select.find_elements_by_tag_name("option")
for option in all_options:
print("选项文本:{}".format(option.text))
print("选项值:{}".format(option.get_attribute("value")))
option.click()
time.sleep(3)
driver.quit()
def fun8():
'''
多窗口切换/页面
:return:
'''
driver = webdriver.Firefox()
driver.implicitly_wait(10)
driver.get("http://www.baidu.com")
# 获得百度搜索窗口句柄
search_windows = driver.current_window_handle
driver.find_element_by_link_text('登录').click()
time.sleep(2)
driver.find_element_by_link_text("立即注册").click()
time.sleep(2)
# 获得当前所有打开的窗口句柄
all_handles = driver.window_handles
# 进入注册窗口
for handle in all_handles:
print(handle)
if handle != search_windows:
driver.switch_to.window(handle)
print(driver.title)
driver.find_element_by_name("userName").send_keys('username')
driver.find_element_by_name('phone').send_keys('138XXXXXXXX')
time.sleep(2)
# 关闭当前窗口
driver.close()
# 回到搜索窗口
driver.switch_to.window(search_windows)
print(driver.title)
driver.quit()
def fun9():
'''
警告框处理
:return:
'''
driver = webdriver.Firefox()
driver.get('http://www.baidu.com')
# 打开搜索设置
link = driver.find_element_by_xpath('//*[@id="s-usersetting-top"]').click()
driver.find_element_by_link_text("搜索设置").click()
time.sleep(2)
# 保存设置
driver.find_element_by_class_name("prefpanelgo").click()
# 获取警告框
alert = driver.switch_to.alert
# 获取警告框提示信息
alert_text = alert.text
print(alert_text)
time.sleep(3)
# 接取警告框
alert.accept()
driver.quit()
if __name__=='__main__':
fun7()
select.html
<html>
<head>
<meta charset="utf-8">
<title>测试网页</title>
</head>
<body>
<select name="fruit" size=1>
<option id='peach' value='taozi'>桃子</option>
<option id='watermelon' value='xigua'>西瓜</option>
<option id='orange' value='juzi' selected='selected'>橘子</option>
<option id='peach' value='mihoutao'>猕猴桃</option>
<option id='peach' value='shanza'>山楂</option>
<option id='peach' value='lizi'>荔枝</option>
</select>
</body>
</html>