У меня есть программа веб-автоматизации Selenium для tradeview. Все остается на одной вкладке, но когда я открываю новую вкладку / ссылку, на которую она переключается и которую я хочу закрыть после этого, она закрывает исходную вкладку. Выглядит это так:

for i in range(1, 1001):
input_ = '/html/body/div[8]/div/div[4]/table/tbody/tr[x]/td[1]/div/div[2]/a' 
list_input_ = list(input_) 
list_input_[44] = str(i)  
input_ = ''.join(list_input_)
stock = driver.find_element_by_xpath(input_) 
stock.click()
time.sleep(5)
driver.close() 
print(input_)
if i > 9:
    break 

Stock = driver.find_element_by_xpath (input_) и stock.click () открывают новую вкладку / ссылку слева. Но затем driver.close () закрывает вкладку, в которой я был ранее. Я хочу, чтобы он закрыл вкладку, которую он только что открыл и в которой я сейчас нахожусь. Что он и должен был сделать. Также кажется, что ни одна из команд селена не работает на этой недавно открытой вкладке, а работает только на исходной вкладке.

Скопированный элемент открываемой ссылки выглядит так: <a class="tv-screener__symbol apply-common-tooltip" href="https://www.tradingview.com/symbols/NASDAQ-STAF/" target="_blank" rel="noopener">STAF</a>

Я здесь что-то не так сделал? заранее спасибо

1
Sam00000000 16 Окт 2020 в 13:00

1 ответ

Лучший ответ

Это потому, что вы не переключили фокус на новую вкладку, которую вы открыли. Чтобы переключить фокус на только что открытую вкладку, используйте эту строку:

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

Эта строка переключает фокус на вторую вкладку, открытую в вашем браузере. Затем вы можете выполнять операции, которые хотите на этой вкладке. Затем, если вы хотите закрыть эту вкладку, просто используйте:

driver.close()

Это закроет вторую вкладку (вкладка, которая в данный момент находится в фокусе).

1
Sushil 16 Окт 2020 в 10:04