作者:阿思翠 | 来源:互联网 | 2023-09-01 09:08
1.ActionChains类鼠标操作常用方法:引入ActionChains类:<spanstyle"font-size:18px;">fromselenium.
1.ActionChains类鼠标操作常用方法:
引入ActionChains类:
from selenium.webdriver import ActionChains
context_click() 右击
RightClick = driver.find_element_by_id("id")
ActionChains(driver).context_click(RightClick).perform()
double_click() 双击
DoubleClick = driver.find_element_by_name("name")
ActionChains(driver).double_click(DoubleClick).perform()
drag_and_drop(source, target) 鼠标拖放
source:鼠标按下的源元素;target:鼠标释放的目标元素
element = driver.find_element_by_name("name")
target = driver.find_element_by_name("name")
ActionChains(driver).drag_and_drop(element, target).perform()
move_to_element() 鼠标悬停在一个元素上
above = driver.find_element_by_xpath("xpath路径")
ActionChains(driver).move_to_element(above).perform()
click_and_hold() 按下鼠标左键在一个元素上
left = driver.find_element_by_name("name")
ActionChains(driver).click_and_hold(left).perform()
2.在窗口和frame之间切换:
现代的web应用常常会在页面中嵌套frame或者是窗口,这给我们定位元素带来一定的困难。如果元素是在一个iframe内的话,直接使用find_element_by_*()系列的方法有时候会找不到想要的元素的。
这个时候需要使用:
driver.switch_to_frame("framename或者id")
来切换到包含该元素的iframe
我们也可以使用.来获取到下一级的frame,可以指明子frame的索引号:
driver.switch_to_frame("frameName.0.child")
这样就会切换到name或id=frameName的第一个子frame中name=child的frame中
当要从该iframe中出去时要调用driver.switch_to_default_content(),返回到主content,也就是主界面中
当要切换多窗口的时候:使用
driver.switch_to_window("windowName")
如果不知道windowName,可以看一下打开该窗口的JS或者连接:
例如:
Click here to open a new window
当然你也可以传递一个窗口的句柄到switch_to_window()方法:
可以通过这种方法迭代地打开所有窗口:
for handle in driver.window_handles:
driver.switch_to_window(handle)
3.处理弹出窗口:
当你触发一个导致弹出窗口的动作时,可以用switch_to_alert()方法切换到弹出窗口
alert = driver.switch_to_alert()
这样会返回当前弹出框的对象,使用这个对象可以对弹出框进行操作。
4.处理COOKIEs:
要处理COOKIE首先要到该域下:
如下:
# Go to the correct domain
driver.get("http://www.example.com")
# Now set the COOKIE. This one's valid for the entire domain
COOKIE = {‘name’ : ‘foo’, ‘value’ : ‘bar’}
driver.add_COOKIE(COOKIE)
# And now output all the available COOKIEs for the current URL
driver.get_COOKIEs()