selenium(二)
一、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 webdriver
driver = webdriver.Chrome()
handles = driver.window_handles
print(handles)
driver.switch_to.window(handles[-1])
# ['CDwindow-2781C478671E0D99F4A44ED4CA185DC3']