Я хочу работать с несколькими окнами и вкладками, используя селен и питон.

Я получаю ошибку ниже во время выполнения скрипта: - (код упоминается наконец)

{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()
0
Tester P 22 Дек 2015 в 12:46

3 ответа

Лучший ответ

Вы получаете предупреждение, для новых версий селена метод изменился.

Вместо использования: driver.switch_to_window(window)

Попробуйте с: driver.switch_to.window

Где window - ваша переменная.

0
Javitronxo 22 Дек 2015 в 09:54

Я предлагаю очень простой способ переключаться между окнами без каких-либо хлопот с ручками. 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)
0
Abhinav 22 Дек 2015 в 10:16

Как говорится в предупреждении

DeprecationWarning: используйте вместо этого driver.switch_to.window

Вам нужно будет изменить свой

driver.switch_to_window

С участием

driver.switch_to.window

Но подумайте: это предупреждение, а не ошибка! Ваш код должен работать, он просто говорит вам, что этот метод устарел.

1
thefabbulus 22 Дек 2015 в 10:15