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) ——发送某个键到指定元素
两种实现方式python
#前面无聊的代码我就略咯 #方式一: actions=ActionChains(driver) #拿到动做链对象 actions.drag_and_drop(sourse,target).perform() #其中sourse为起始元素对象,target为结束位置元素对象 #通常用于把一个图片从一个地方拖到另外个元素地方 #方式二: actions=ActionChains(driver) #拿到动做链对象 actions.click_and_hold(移动的对象).perform() actions.move_by_offset(x,y).perform() #x为移动水平距离,y为移动垂直距离,正负表明左右或者上下 actions.release().perform() #松开,这一步别忘了
给个段代码哈app
def get_stacks(distance): #distance为滑动的总长度 distance += 20 ''' 匀加速\减速运行 v = v0 + a * t 位移: s = v * t + 0.5 * a * (t**2) ''' # 初速度 v0 = 0 # 加减速度列表 a_list = [20,40, 5] # 时间 t = 0.1 # 初始位置 s = 0 # 向前滑动轨迹 forward_stacks = [] mid = distance * 3 / 5 while s < distance: if s < mid: a = a_list[random.randint(0, 1)] else: a = -a_list[2] v = v0 stack = v * t + 0.5 * a * (t ** 2) # 每次拿到的位移 stack = round(stack) s += stack v0 = v + a * t forward_stacks.append(stack) back_stacks = [-1, -1, -2, -3, -2, -3, -2, -2, -3, -1] return {'forward_stacks': forward_stacks, 'back_stacks': back_stacks} stacks = get_stacks(60) print(stacks) forward_stacks = stacks['forward_stacks'] back_stacks = stacks['back_stacks'] slider_button = driver.find_element_by_class_name('滑动东西的类名') ActionChains(driver).click_and_hold(slider_button).perform() for forward_stack in forward_stacks: ActionChains(driver).move_by_offset(xoffset=forward_stack, yoffset=0).perform() for back_stack in back_stacks: ActionChains(driver).move_by_offset(xoffset=back_stack, yoffset=0).perform() time.sleep(0.3) ActionChains(driver).move_by_offset(xoffset=5, yoffset=0).perform() time.sleep(0.2) ActionChains(driver).move_by_offset(xoffset=-5, yoffset=0).perform() time.sleep(0.1) ActionChains(driver).move_by_offset(xoffset=1, yoffset=0).perform() time.sleep(0.1) ActionChains(driver).move_by_offset(xoffset=-1, yoffset=0).perform() ActionChains(driver).release().perform()