Selinium动作链 + 运行Javascript

本文介绍了在Selenium中如何处理iframe,并利用execute_script方法执行JavaScript来操控滚动条,因为Selenium自身不直接支持滚动条操作。
from selenium import webdriver
from selenium.webdriver import ActionChains

browser = webdriver.Chrome()
url = 'http://www.runoob.com/try/try.php?filename=jqueryui-api-droppable'
browser.get(url)
browser.switch_to.frame('iframeResult')
source = browser.find_element_by_xpath('//*[@id="draggable"]')
target = browser.find_element_by_xpath('//*[@id="droppable"]')
actions = ActionChains(browser)
actions.drag_and_drop(source,target)
actions.perform()
#将sourse拖到target

# 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) ——拖拽到某个元素然后松开
# drag_and_drop_by_offset(source, xoffset, yoffset) ——拖拽到某个坐标然后松开
# 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) ——移动到距某个元素(左上角坐标)多少距离的位置
# perform() ——执行链中的所有动作
# release(on_element=None) ——在某个元素位置松开鼠标左键
# send_keys(*keys_to_send) ——发送某个键到当前焦点的元素
# send_keys_to_element(element, *keys_to_send) ——发送某个键到指定元素

1.嵌入iframe先要切换到iframe

seliium没有提供直接处理滚动条的API,使用excute_script()方法执行js脚本

from selenium import webdriver

browser = webdriver.Chrome()
browser.get('https://www.zhihu.com/explore')
browser.execute_script('window.scrollTo(0, document.body.scrollHeight)')
browser.execute_script('alert("To Bottom")')


#   1.滚动条回到顶部:
# js="var q=document.getElementById('id').scrollTop=0"
# browers.execute_script(js)

#   2.滚动条拉到底部
# self.browser.execute_script('window.scrollTo(0, document.body.scrollHeight)')
 
#   二、横向滚动条
#     1.有时候浏览器页面需要左右滚动(一般屏幕最大化后,左右滚动的情况已经很少见了)。
#     2.通过左边控制横向和纵向滚动条scrollTo(x, y)js = "window.scrollTo(100,400);"
#     driver.execute_script(js)

#   三、元素聚焦
# 虽然用上面的方法可以解决拖动滚动条的位置问题,但是有时候无法确定我需要操作的元素在什么位置,
# 有可能每次打开的页面不一样,元素所在的位置也不一样,怎么办呢?这个时候我们可以先让页面直接
# 跳到元素出现的位置,然后就可以操作了。
# 同样需要借助JS去实现。 具体如下:

#     target = driver.find_element_by_xxxx()
#     driver.execute_script("arguments[0].scrollIntoView();", target)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值