如何在Selenium for Python上由.click()打开的新标签上使用driver.current_url

时间:2019-07-18 19:09:39

标签: python html selenium selenium-webdriver beautifulsoup

我正在编写一个Python脚本,该脚本使用BeautifulSoup进行网页抓取,然后使用Selenium进行站点导航。使用链接上的.click()导航到另一个站点后,我想使用.current_url获取用于制作精美汤的站点URL。问题是.click()在新选项卡中打开链接,所以当我使用current_url时,会得到原始站点的URL。

我尝试使用:

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

更改选项卡,但对current_url函数没有影响,因此无效。

简化代码:

second_driver = webdriver.Firefox()
second_driver.get(<the original url>)

time.sleep(1)

second_driver.find_element_by_class_name(<html for button that opens new tab >).click()

time.sleep(1)

url=second_driver.current_url

因此,我希望单击后的URL成为新站点,而不是原始URL

谢谢,很抱歉,我显然是一个初学者。

1 个答案:

答案 0 :(得分:0)

您需要切换到新标签。 webrdiver.window_handles是打开的选项卡/窗口的列表。该代码段将使您切换到第二个打开手柄。 如果要返回开始的位置,请使用[0]。如果要始终转到打开的最后一个选项卡,请使用[-1]。如果您尝试在window_handles [1]存在之前切换到它,则会引发IndexError。

webdriver.switch_to_window(webdriver.window_handles[1])