首页 > 其他 > 详细

selenium常用操作学习笔记

时间:2019-10-05 19:15:38      阅读:87      评论:0      收藏:0      [点我收藏+]

一,弹窗处理(推荐文章:推荐文章:https://blog.csdn.net/huilan_same/article/details/52298460)

selenium提供switch_to方法定位弹窗的对话框:alert,prompt,confirm

方法一:

a = driver.switch_to.alert # 定位弹窗的对话框
driver.switch_to.alert.accept() # 点击确认
driver.switch_to.alert.dismiss() # 点击取消
driver.switch_to.alert.send_keys(输入内容) # 输入内容
driver.switch_to.alert.text() # 获取对话框文本值

方法二:

使用显式等待,判断alert是否出现(EC.alert_is_present())

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

wait = WebDriverWait(driver, 5)
wait.until(EC.alert_is_present()).accept()
wait.until(EC.alert_is_present()).dismiss()
wait.until(EC.alert_is_present()).send_keys("XXX")
wait.until(EC.alert_is_present()).text()

二,windows弹窗处理

1.定位iframe弹窗

# 切换到iframe中,然后再定位
# 方法一,根据iframe标签的id属性值定位,id唯一
driver.switch_to.frame(frame_id)
# 方法二,根据iframe标签的name属性值定位,name唯一
driver.switch_to.frame(frame_name)
# 方法三,通过索引定位
# index从0开始,传入整型参数即判定为用index定位,传入str参数则判定为用id/name定位
driver.switch_to.frame(1)
# 方法四,根据webelement对象进行定位
driver.switch_to.frame(driver.find_elements_by_tag_name("iframe")[0])

2.frame间的切换

<html>
    <iframe id="frame1">
        <iframe id="frame2" / >
    </iframe>
</html>

 

# 从iframe回到父html,从ifrme1或iframe2回到父html
driver.switch_to.default_content()
# 能够切换到父iframe元素中,从iframe2回到iframe1
driver.switch_to.parent_frame()

三,窗口间切换

# 获取所有窗口
all_windows = driver.window_handles

# 获取当前窗口handle name
current_window = driver.current_window_handle

# 方法一
# 切换window,如果window不是当前window,则切换到该window
for window in all_windows:
    if window != current_window:
        driver.switch_to.window(window)

# 方法二
# 切换到最新的窗口
driver.switch_to.window(driver.window_handles[-1])

# 关闭新窗口后切回原窗口,在这里不切回原窗口,是无法操作原窗口元素的,即使你关闭了新窗口
driver.close()
driver.switch_to.window(current_window)  

四,鼠标操作

ActionChains支持模拟一系列的鼠标操作,例如鼠标移动、鼠标按钮操作、按键操作、上下文交互操作、单击、双击、右键、拖拽等。

1,ActionChains包括的方法

ActionChains类中的操作方法 解析
click(on_element=None) 点击鼠标左键
click_and_hold(on_element=None) 点击鼠标左键不松开
context_click(on_element=None) 点击鼠标右键
double_click(on_element=None) 双击鼠标左键
drag_and_drop(source, target) 拖拽指定元素source,到指定target,并松开
drag_and_drop_by_offset(source, xoffset, yoffset) 拖拽指定元素source到指定的x,y坐标,并松开
key_down(value, element=None) 按下某个键盘上的键
key_up(value, element=None) 松开某个键
move_by_offset(xoffset, yoffset) 鼠标从当前位置移动到某个坐标
move_to_element(to_element) 鼠标移动到指定元素的中间
move_to_element_with_offset(to_element, xoffset, yoffset) 鼠标移动到距离指定元素x,y坐标的位置
pause(seconds) 在指定时间内暂停所有的输入
perform() 执行链中的所有动作
release(on_element=None) 在某个元素位置松开鼠标左键
reset_actions() 清除本地和远程端上已经存储的操作
send_keys(*keys_to_send) 发送某些键到当前焦点的元素
send_keys_to_element(element, *keys_to_send) 发送某些键到指定元素

 

selenium常用操作学习笔记

原文:https://www.cnblogs.com/ella-li/p/11625378.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!