【问题标题】:Error while switching window in python selenium在 python selenium 中切换窗口时出错
【发布时间】:2015-12-22 18:16:19
【问题描述】:

我想使用 selenium 和 python 处理多个窗口和选项卡。

我在脚本执行期间遇到以下错误:- (代码最后提到)

{f625f26d-cfcf-442c-b9fc-5e96a199cd43}
C:\Python34\lib\site-packages\selenium-2.47.1- py3.4.egg\selenium\webdriver\remot
e\webdriver.py:525: DeprecationWarning: use driver.switch_to.window instead
 warnings.warn("use driver.switch_to.window instead", DeprecationWarning)
 {cad6e3cf-9062-408e-a6f1-11e98813dc6c}

import unittest
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By

class GoogleTabs(unittest.TestCase):

 def setUp(self):
     self.driver = webdriver.Firefox()

 def test_google_search_page(self):
     driver = self.driver
     driver.get("http://www.cdot.in")
     window_before = driver.window_handles[0]
     print (window_before)
     driver.find_element_by_xpath("//a[@href='http://www.cdot.in/home.htm']").click()
     window_after = driver.window_handles[1]
     driver.switch_to_window(window_after)
     print (window_after)
     driver.find_element_by_link_text("ATM").click()
     driver.switch_to_window(window_before)


 def tearDown(self):
     self.driver.close()

if __name__ == "__main__":
unittest.main()

【问题讨论】:

  • 是错误还是警告?

标签: python selenium selenium-webdriver


【解决方案1】:

正如警告所说

弃用警告:改用 driver.switch_to.window

你需要改变你的

driver.switch_to_window

driver.switch_to.window

但是想一想:这是一个警告,而不是错误!您的代码应该可以工作,它只是告诉您该方法已被弃用。

【讨论】:

    【解决方案2】:

    您收到一条警告消息,对于新版本的 selenium,方法已更改。

    而不是使用:driver.switch_to_window(window)

    试试:driver.switch_to.window

    window 是您的变量。

    【讨论】:

      【解决方案3】:

      我提出了一种非常简单的方法来在窗口之间切换,而无需自己玩手柄。 https://gist.github.com/ab9-er/08c3ce7d2d5cdfa94bc7

      def change_window(browser):
          """
          Simple window switcher without the need of playing with ids.
          @param browser: Current browser instance
          """
          curr = browser.current_window_handle
          all_handles = browser.window_handles
          for handle in list(set([curr]) - set(all_handles)):
              return browser.switch_to_window(handle)
      

      【讨论】:

        猜你喜欢
        • 2016-03-09
        • 1970-01-01
        • 2018-01-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-07-31
        • 2012-05-24
        • 1970-01-01
        相关资源
        最近更新 更多