浏览器一些常用属性和方法,包括控制窗口大小、页面前进后退、页面刷新、打开或关闭标签页、滚动条等等
? 在页面中点击某个链接之后,可能就会打开一个新的标签页,Chromedriver驱动是不会主动帮我们去切换。多标签页出现后,如果要做下一步操作,需要先切换浏览器标签页。所有切换动作都是用switch_to语句,标签页切换关键代码:
import time from selenium import webdriver # 启动Chromedriver,并与Chromedriver开启会话 driver = webdriver.Chrome() driver.implicitly_wait(10) driver.get("http://www.baidu.com") driver.find_element_by_id(‘kw‘).send_keys("selenium") driver.find_element_by_id(‘su‘).click() # 获取当前标签页句柄 wins = driver.current_window_handle print(‘当前标签页:‘, wins) # 点击其中一个百度结果,出现一个新标签页 driver.find_element_by_xpath(‘//h3[@class="t c-gap-bottom-small"]//a‘).click() time.sleep(2) # 获取当前所有标签页句柄 wins = driver.window_handles # 返回的是一个列表,按照标签页打开的顺序 print(‘所有标签页1:‘, wins) # 切换到第一个标签页 driver.switch_to.window(wins[0]) time.sleep(2) # 打开新的标签页 js = ‘window.open("https://www.cnblogs.com/miki-peng/")‘ driver.execute_script(js) time.sleep(2) # 再次获取当前所有标签页句柄 wins = driver.window_handles print(‘所有标签页2:‘, wins) # 关闭当前标签页 driver.close() time.sleep(3) driver.quit() # 关闭浏览器,kill掉chromedriver进程
? 小思考??:
? 由于selenium中没有提供打开标签页的方法,但它是支持执行js
语句的噢,因此可以通过js
来操作。在实际应用中我们打开新的标签页是通过鼠标点击浏览器的"+"号,除了这种方法,还可以怎么打开新标签页
? 一般元素定位,元素如果不在浏览器的可视位置(即可见只是不在可视位置),会自动把元素滚动到可视位置,但也有不会自己滚动的(比较少),那我们就可以用selenium的ele.location_once_scrolled_into_view()
就可以滚动到某个元素处,也就是滚动直到这个元素出现在屏幕里。除了这种方式以外,也可以用js来滚动窗口。
? selenium提供了execute_script方法来执行js语句,几种滚动方式如下:
? ??1、移动元素element对象,与当前窗口的底部对齐:
? ??2、移动元素element对象,与当前窗口的顶部对齐:
? ??3、把页面移动到底部:
? ??4、把页面移动到顶部:
原文:https://www.cnblogs.com/liangcr/p/14524854.html