动作链 :一系列连续的动作(滑动)
我们来看下这个网页是可以拖动的
那么我们如何通过selenium来实现呢?
1.导入动作链包
from selenium.webdriver import ActionChains
2.标签定位
url = 'https://www.runoob.com/try/try.php?filename=jqueryui-api-droppable'
bro = webdriver.Chrome(executable_path='./chromedriver')
bro.get(url)
sleep(1)
div_tag = bro.find_element_by_xpath('//*[@id="draggable"]')
运行一下:
我们发现,直接报错。难道我们定位错了吗?
来看下页面源码
我们看到,拖拽的对象在另一个一个框架里,我们直接定位分析都不是同一框架,当然获取不到
如果通过find系列的函数进行标签定位,如果标签是存在于ifram下面,则会定位失败
解决方案:使用switc_to即可
bro.switch_to.frame('iframeResult')
div_tag = bro.find_element_by_xpath('//*[@id="draggable"]')
3.ActionChains
# 对div_tag进行滑动操作
action = ActionChains(bro)
action.click_and_hold(div_tag) # 点击且长按
for i in range(6):
# perform 让动作链立即执行
action.move_by_offset(10, 15).perform()
sleep(0.5)
action.release()
bro.quit()
这样我们就看到了拖动



