0
点赞
收藏
分享

微信扫一扫

[selenium][02] - 打开新的页面N种方法

一脸伟人痣 2022-01-21 阅读 34

文章目录

导读

今天遇到一个问题,控制chrome的时候,想在新的页面处理临时任务,处理临时任务结束后再返回前一个页面处理问题。

这就涉及到如下两个问题:

  • 打开新的Chrome标签
  • 控制多个标签(由于篇幅问题,这里不讨论)

解决问题思路

  • 查看官方文档,然而翻了整个selenium文档,没有想要的方案。
  • 查源码,找到switch_to.new_window
  • baidu、google……

测试类代码(driver正常退出)

这里特别注意一点就是,关闭driver的时候,需要枚举所有的窗口self.driver.window_handles,然后全部关闭,最后再执行quit。

否则会出现chrome未正常退出的情况。这是之前遇到的一个问题,记录一下。


class Main(object):
    def __init__(self):
        from selenium import webdriver
        self.driver = webdriver.Chrome()
        self.driver.get("http://www.baidu.com")
        
    def __del__(self):
        print('===  ' + '__del__')
        if self.driver:
            handles = self.driver.window_handles  # 获取所有的 handles
            for i in reversed(range(len(handles))):
                self.driver.switch_to.window(handles[i])
                self.driver.close()
                time.sleep(1)

            self.driver.quit()

方案一:driver.switch_to.new_window(部分系统失败)

self.driver.switch_to.new_window('tab')

没错,就这么一行代码搞定,在win7电脑上试了一下,完全正常。

然而换了台电脑win10无法正常打开新页面,暂时放弃。

方案二:Actions(失败)

        body = self.driver.find_element_by_tag_name('body')
        ActionChains(self.driver)\
            .key_down(Keys.CONTROL)\
            .send_keys('t')\
            .key_up(Keys.CONTROL).perform()
        time.sleep(1)

网上找了很多资料都是这个方案,各种尝试,都是失败的。可能Mac上可以,待测试

方案三: Ctrl+T(失败)

        self.driver.find_element(By.TAG_NAME, 'body').send_keys(Keys.COMMAND + "t")

这个方案是基于真人操作,输入Ctrl+T能打开新的标签页。不过方案二都失败了,这个也跟预期一样的失败了。。。可能Mac上可以,待测试

方案四: driver.execute_script(成功

            self.driver.execute_script("window.open('','_blank');")

这个方案也是各种资料里面找到的,其实就是通过运行JavaScript进行打开Tab页面的操作。

参考资料

  • selenium官网 https://www.selenium.dev/documentation/
  • github https://github.com/SeleniumHQ/selenium
  • selenium + python 中文文档 https://python-selenium-zh.readthedocs.io/zh_CN/latest/
  • Open web in new tab Selenium + Python https://stackoverflow.com/questions/28431765/open-web-in-new-tab-selenium-python
  • selenium多窗口切换,及其关闭 https://www.cnblogs.com/zhenyu1/p/14698880.html
  • qq群:夜猫逐梦技术交流裙/953949723
    逐梦中原技术交流QQ群
举报

相关推荐

0 条评论