Как открыть ссылку в новой вкладке с питоном и селеном - PullRequest
0 голосов
/ 19 мая 2019

Я хочу открыть ссылки, которые нахожу на сайте, в новой вкладке. Я попытался открыть новую вкладку и передать URL ссылки на драйвер, как предложено здесь , однако новая вкладка просто не откроется. (Есть несколько других предложений о том, как открыть новую вкладку, но ни одна из них мне не подходит.)

Поэтому моей последней попыткой было щелкнуть правой кнопкой мыши ссылку и нажать «t», чтобы открыть ссылку в новой вкладке, например:

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.action_chains import ActionChains

# Using Firefox to access web
driver = webdriver.Firefox()

# Open the website
driver.get('https://registers.esma.europa.eu/publication/searchRegister?core=esma_registers_firds')

# search for information
elem = driver.find_element_by_id('keywordField')
elem.clear()
elem.send_keys('XS1114155283')

button = driver.find_element_by_id('searchSolrButton')
button.click()

table_body = driver.find_element_by_xpath("//table[@id='T01']/tbody")
for link in table_body.find_elements_by_tag_name('a'):

    act = ActionChains(driver)
    act.context_click(link)
    act.send_keys("t")
    act.perform()

    # ... do something in the new tab, close tab, and open next link ...

Однако на act.perform() появляется сообщение об ошибке, которое гласит:

MoveTargetOutOfBoundsException: (974, 695) is out of bounds of viewport width (1366) and height (654)

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

1 Ответ

0 голосов
/ 20 мая 2019

Вы можете использовать функцию driver.execute_script(), чтобы открыть ссылку в новой вкладке

from selenium import webdriver

# Using Firefox to access web

driver = webdriver.Firefox()

# Open the website
driver.get('https://registers.esma.europa.eu/publication/searchRegister?core=esma_registers_firds')

# search for information
elem = driver.find_element_by_id('keywordField')
elem.clear()
elem.send_keys('XS1114155283')

button = driver.find_element_by_id('searchSolrButton')
button.click()

table_body = driver.find_element_by_xpath("//table[@id='T01']/tbody")
for link in table_body.find_elements_by_tag_name('a'):
    href = link.get_attribute('href')
    # open in new tab
    driver.execute_script("window.open('%s', '_blank')" % href)
    # Switch to new tab
    driver.switch_to.window(driver.window_handles[-1])

    # Continuous your code
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...