selenium(二)

王练 2020-06-25

一、web控件的交互进阶

selenium需要与浏览器交互就需要导入Action Chains,主要用于模拟鼠标的行为,比如单击、双击、拖动等;

当调用Action Chains的方法时,会将所有操作按顺序存入队列

当调用perform()方法时,队列中的事件会依次进行

from selenium import webdriver
from selenium.webdriver import ActionChains

driver = webdriver.Chrome()
action = ActionChains(driver)
action.send_keys()

二、点击相关操作

  1)鼠标单击

  action.click(on_element=None)

  2) 鼠标单击且按住不放

  action.click_and_hold(on_element=None)

  3) 执行鼠标右键操作

  action.context_click(on_element=None)

  4) 执行鼠标左键双击

  action.double_click(on_element=None)

  5) 拖拽起始的元素到目标元素

  action.drag_and_drop(source,target)

  6) 将目标拖动到指定位置

  action.drag_and_drop_by_offset(source,xoffset,yoffset)

  

三、按键

  ey:按住Ctrl+c然后释放

  ActionChains(driver).key_down(keys.CONTROL).send_keys(‘c‘).key_up(keys.CONTROL).perform()

四、移动

  1、将鼠标移动到某一个位置

  action.move_by_offset(xoffset,yoffset)

  2、将鼠标移动到某个元素的位置

  action.move_to_element(to_element)

  3、移动鼠标到某个元素位置的偏移位置

  action.move_to_element_with_offset(to_element,xoffset,yoffset)

执行ActionChains: action.perfoem()

五、frame

  iframe的多种切换方式

  1)index切换

  driver.switch_to.frame(0)

  2) id切换

  driver.switch_to.frame(‘string‘)

  3) name切换

  driver.switch_to.frame(‘string‘)

  4)webelement切换

  driver.switch_to.frame(driver.find_element_by_tag_name("iframe"))

  iframe切换回默认页面

  driver.switch_to_default_content()

  iframe多层切换:

  第一层 iframe     第二层 iframe1     第二层 iframe2

  从最外面的iframe切换到iframe2需要层层切换:

  driver.switch_to.frame("iframe1")

  driver.switch_to.frame("iframe2")

  从iframe2切换回iframe1

  driver.switch_to.parent_frame()

  从iframe1切换回iframe

  driver.switch_to.parent_frame()

  

六、多窗口

  浏览器窗口的属性用句柄来识别

from selenium import webdriverdriver = webdriver.Chrome()handles = driver.window_handlesprint(handles)driver.switch_to.window(handles[-1])# [‘CDwindow-2781C478671E0D99F4A44ED4CA185DC3‘]

  

  

相关推荐