王练 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‘]
5.环境变量配置在linux系统下,需要将可执行文件配置到环境变量或将文件移动到属于环境变量的目录里面方法一:将文件移动到属于环境变量目录中sudo mv chromedriver /user/bin