【python+selenium的web自动化】- 控制浏览器的常用操作

前言

​ 本文主要介绍selenium控制浏览器一些常用属性和方法,包括控制窗口大小、页面前进后退、页面刷新、打开或关闭标签页、滚动条等等

设置浏览器大小

python

  1. <span style="background-color:#282c34"><span style="color:#abb2bf"><span style="color:#f92672">import</span> time

  2. <span style="color:#f92672">from</span> selenium <span style="color:#f92672">import</span> webdriver

  3. <span style="color:#b18eb1"><em># 浏览器实例化</em></span>

  4. driver = webdriver.Chrome()

  5. <span style="color:#b18eb1"><em># 把浏览器窗口最大化</em></span>

  6. driver.maximize_window()

  7. <span style="color:#b18eb1"><em># 把浏览器窗口最小化</em></span>

  8. driver.minimize_window()

  9. <span style="color:#b18eb1"><em># 设置浏览器窗口大小,长、宽作为参数传递进去,单位:像素</em></span>

  10. driver.set_window_size(<span style="color:#d19a66">500</span>,<span style="color:#d19a66">800</span>)

  11. <span style="color:#b18eb1"><em># 获取浏览器大小</em></span>

  12. size = driver.get_window_size()

  13. <span style="color:#e6c07b">print</span>(size)

  14. time.sleep(<span style="color:#d19a66">5</span>)

  15. driver.quit()</span></span>

前进/后退/刷新

python

 
  1. <span style="background-color:#282c34"><span style="color:#abb2bf"><span style="color:#f92672">import</span> time

  2. <span style="color:#f92672">from</span> selenium <span style="color:#f92672">import</span> webdriver

  3. <span style="color:#b18eb1"><em># 浏览器实例化</em></span>

  4. driver = webdriver.Chrome()

  5. driver.get(<span style="color:#98c379">"http://www.baidu.com"</span>)

  6. driver.find_element_by_xpath(<span style="color:#98c379">"//input[@id='kw']"</span>).send_keys(<span style="color:#98c379">"selenium"</span>)

  7. driver.find_element_by_xpath(<span style="color:#98c379">"//input[@id='su']"</span>).click()

  8. time.sleep(<span style="color:#d19a66">2</span>)

  9. <span style="color:#b18eb1"><em># 后退</em></span>

  10. driver.back()

  11. time.sleep(<span style="color:#d19a66">2</span>)

  12. <span style="color:#b18eb1"><em># 前进</em></span>

  13. driver.forward()

  14. time.sleep(<span style="color:#d19a66">2</span>)

  15. <span style="color:#b18eb1"><em># 刷新</em></span>

  16. driver.refresh()

  17. time.sleep(<span style="color:#d19a66">2</span>)

  18. time.sleep(<span style="color:#d19a66">5</span>)

  19. driver.quit()</span></span>

获取浏览器相关信息

python

 
  1. <span style="background-color:#282c34"><span style="color:#abb2bf"><span style="color:#f92672">from</span> selenium <span style="color:#f92672">import</span> webdriver

  2. driver = webdriver.Chrome()

  3. driver.get(<span style="color:#98c379">"https://www.baidu.com"</span>)

  4. <span style="color:#b18eb1"><em># 获取浏览器名称</em></span>

  5. <span style="color:#e6c07b">print</span>(driver.name)

  6. <span style="color:#b18eb1"><em># 获取网页的 URL 地址</em></span>

  7. <span style="color:#e6c07b">print</span>(driver.current_url)

  8. <span style="color:#b18eb1"><em># 获取网页的标题</em></span>

  9. <span style="color:#e6c07b">print</span>(driver.title)

  10. <span style="color:#b18eb1"><em># 获取网页的源代码</em></span>

  11. <span style="color:#e6c07b">print</span>(driver.page_source)</span></span>

标签页切换

​ 在页面中点击某个链接之后,可能就会打开一个新的标签页,Chromedriver驱动是不会主动帮我们去切换。多标签页出现后,如果要做下一步操作,需要先切换浏览器标签页。所有切换动作都是用switch_to语句,标签页切换关键代码:switch_to.window(标签页句柄)

python

 
  1. <span style="background-color:#282c34"><span style="color:#abb2bf"><span style="color:#f92672">import</span> time

  2. <span style="color:#f92672">from</span> selenium <span style="color:#f92672">import</span> webdriver

  3. <span style="color:#b18eb1"><em># 启动Chromedriver,并与Chromedriver开启会话</em></span>

  4. driver = webdriver.Chrome()

  5. driver.implicitly_wait(<span style="color:#d19a66">10</span>)

  6. driver.get(<span style="color:#98c379">"http://www.baidu.com"</span>)

  7. driver.find_element_by_id(<span style="color:#98c379">'kw'</span>).send_keys(<span style="color:#98c379">"selenium"</span>)

  8. driver.find_element_by_id(<span style="color:#98c379">'su'</span>).click()

  9. <span style="color:#b18eb1"><em># 获取当前标签页句柄</em></span>

  10. wins = driver.current_window_handle

  11. <span style="color:#e6c07b">print</span>(<span style="color:#98c379">'当前标签页:'</span>, wins)

  12. <span style="color:#b18eb1"><em># 点击其中一个百度结果,出现一个新标签页</em></span>

  13. driver.find_element_by_xpath(<span style="color:#98c379">'//h3[@class="t c-gap-bottom-small"]//a'</span>).click()

  14. time.sleep(<span style="color:#d19a66">2</span>)

  15. <span style="color:#b18eb1"><em># 获取当前所有标签页句柄</em></span>

  16. wins = driver.window_handles <span style="color:#b18eb1"><em># 返回的是一个列表,按照标签页打开的顺序</em></span>

  17. <span style="color:#e6c07b">print</span>(<span style="color:#98c379">'所有标签页1:'</span>, wins)

  18. <span style="color:#b18eb1"><em># 切换到第一个标签页</em></span>

  19. driver.switch_to.window(wins[<span style="color:#d19a66">0</span>])

  20. time.sleep(<span style="color:#d19a66">2</span>)

  21. <span style="color:#b18eb1"><em># 打开新的标签页</em></span>

  22. js = <span style="color:#98c379">'window.open("https://www.cnblogs.com/miki-peng/")'</span>

  23. driver.execute_script(js)

  24. time.sleep(<span style="color:#d19a66">2</span>)

  25. <span style="color:#b18eb1"><em># 再次获取当前所有标签页句柄</em></span>

  26. wins = driver.window_handles

  27. <span style="color:#e6c07b">print</span>(<span style="color:#98c379">'所有标签页2:'</span>, wins)

  28. <span style="color:#b18eb1"><em># 关闭当前标签页</em></span>

  29. driver.close()

  30. time.sleep(<span style="color:#d19a66">3</span>)

  31. driver.quit() <span style="color:#b18eb1"><em># 关闭浏览器,kill掉chromedriver进程</em></span></span></span>

​ 小思考🔻:

​ 由于selenium中没有提供打开标签页的方法,但它是支持执行js语句的噢,因此可以通过js来操作。在实际应用中我们打开新的标签页是通过鼠标点击浏览器的"+"号,除了这种方法,还可以怎么打开新标签页呢,思考一下,答案将在后面的文章中揭晓→传送门

控制滚动条

​ 一般元素定位,元素如果不在浏览器的可视位置(即可见只是不在可视位置),会自动把元素滚动到可视位置,但也有不会自己滚动的(比较少),那我们就可以用selenium的ele.location_once_scrolled_into_view()就可以滚动到某个元素处,也就是滚动直到这个元素出现在屏幕里。除了这种方式以外,也可以用js来滚动窗口。

​ selenium提供了execute_script方法来执行js语句,几种滚动方式如下:

​ 🚩1、移动元素element对象,与当前窗口的底部对齐

python

 
  1. <span style="background-color:#282c34"><span style="color:#abb2bf">ele = driver.find_element_by_xpath(<span style="color:#98c379">'//h3[@class="t c-gap-bottom-small"]//a'</span>)

  2. driver.execute_script(<span style="color:#98c379">"arguments[0].scrollIntoView(false);"</span>,ele)</span></span>

​ 🚩2、移动元素element对象,与当前窗口的顶部对齐

python

<span style="background-color:#282c34"><span style="color:#abb2bf">driver.execute_script(<span style="color:#98c379">"arguments[0].scrollIntoView();"</span>,ele)</span></span>

​ 🚩3、把页面移动到底部

python

<span style="background-color:#282c34"><span style="color:#abb2bf">driver.execute_script(<span style="color:#98c379">"window.scrollTo(0,document.body.scrollHeight)"</span>)</span></span>

​ 🚩4、把页面移动到顶部

python

<span style="background-color:#282c34"><span style="color:#abb2bf">driver.execute_script(<span style="color:#98c379">"wind

 

感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!有需要的小伙伴可以点击下方小卡片领取   

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值