Как я могу переместить WebDriver на новую открытую вкладку Chrome, не зная индекса?

Я использую Selenium Python Bindings для автоматизации веб-браузера в Chrome. В рамках сценария автоматизации я нажимаю на ссылку, и веб-сайт открывает страницу в новой вкладке. Однако объект WebDriver в моем скрипте Python по-прежнему указывает на первую вкладку.

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

Единственный код, который мне удалось заставить работать до сих пор, это:

driver.switch_to.window(driver.window_handles[1])

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

driver.find_element_by_tag_name('body').send_keys(Keys.CONTROL + Keys.TAB)

Но, используя некоторые журналы, я увидел, что драйвер все еще указывает на первую вкладку. Есть ли способ сосредоточиться на текущей вкладке, которую показывает хром?


person AdamMc331    schedule 16.07.2015    source источник


Ответы (1)


Всякий раз, когда у меня возникают подобные случаи, я переключаюсь на последний дескриптор окна, пока это работало для меня:

driver.switch_to.window(driver.window_handles[-1])
person alecxe    schedule 16.07.2015
comment
Я понятия не имел, что -1 автоматически переключится на последнюю вкладку, спасибо за это! Я попробую это, но, к сожалению, веб-сайт, который я автоматизирую, закрыт на техническое обслуживание (просто мне повезло), но я дам вам знать, как это работает. - person AdamMc331; 16.07.2015