Форум русскоязычного сообщества Ubuntu


Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

Автор Тема: python3: selenium работа с двумя вкладками  (Прочитано 3095 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Luca Brasi

  • Автор темы
  • Активист
  • *
  • Сообщений: 706
  • typical engineer
    • Просмотр профиля
python3: selenium работа с двумя вкладками
« : 09 Октября 2016, 23:19:55 »
Пытаюсь сделать следующее: в первой вкладке открыть сайт. Создать еще одну вкладку и в ней тоже открыть сайт...
Максимум, что выходит - это 2 раза открыть нужные сайты в первой вкладке, а вторую оставить нетронутой даже если она активна. Пытался посылать клавиши "crtl - TAB", но почему-то selenium работает только с первой вкладкой.
Код: (python) [Выделить]
import time,os
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
 
 
chromedriver = "/home/andrew/Загрузки/chromedriver"
os.environ["webdriver.chrome.driver"] = chromedriver
driver = webdriver.Chrome(chromedriver)
for iter in range(0,3):
 
    driver.find_element_by_tag_name("body").send_keys(
    Keys.CONTROL + "t")
 
    driver.get("http://google.com")
 
    time.sleep(3)
    # первая вкладка
    search = driver.find_element_by_name('q')
    search.send_keys('andrew sotnikov site:progreso.com.ua')
    search.send_keys(
        Keys.RETURN)  # hit return after you enter search text
    time.sleep(5) 
 
    time.sleep(3)
    # вторая вкладка
    driver.find_element_by_tag_name("body").send_keys(
    Keys.CONTROL + "t")
 
    driver.get("http://google.com")
    time.sleep(2)
    search = driver.find_element_by_name('q')
    search.send_keys('andrew sotnikov site:progreso.com.ua')
    search.send_keys(
        Keys.RETURN)  # hit return after you enter search text
    time.sleep(5) 
 
 
    driver.find_element_by_tag_name('body').send_keys(
        Keys.CONTROL + 'w')


Пользователь добавил сообщение 10 Октября 2016, 22:41:43:
Все более-менее решилось. Лучшее что я мог придумть - это использовать window_handles. Только предварительно нужно пооткрывать все вкладки, а уже после переключаться между ними посредством метода switch_to_window.

Код: (python) [Выделить]

for elem in range(0,3):
    driver.find_element_by_tag_name("body").send_keys(
    Keys.CONTROL + "t")
 
for handle in driver.window_handles:
 
    driver.get("http://google.com")
    driver.switch_to_window(driver.handle)
    time.sleep(2)
    search = driver.find_element_by_name('q')
    search.send_keys('andrew sotnikov site:progreso.com.ua')
    search.send_keys(
        Keys.RETURN)  # hit return after you enter search text
    time.sleep(5)

« Последнее редактирование: 10 Октября 2016, 22:41:43 от Luca Brasi »
Ubuntu 18.04/ AMD Ryzen 5 2600 3.4GHz/ MSI B450-A Pro Max / Crucial DDR4-3000 16384MB / MSI PCI-Ex GeForce GT 710 2048 MB / Chieftec GPS-600

 

Страница сгенерирована за 0.019 секунд. Запросов: 22.