如何使用 selenium 从空​​选项卡中获取 URL“about:blank”?

Posted

技术标签:

【中文标题】如何使用 selenium 从空​​选项卡中获取 URL“about:blank”?【英文标题】:How to get the URL "about:blank" from empty tab using selenium? 【发布时间】:2019-09-03 03:23:45 【问题描述】:

我需要检查一个打开的标签是否为空并切换到另一个。

我尝试了get_current_url()的方法,但它不起作用。

def check_is_tab_empty(self, link):
    self.click(link)
    self.focus_active_tab()
    tab = self.get_current_url()

tab = self.get_current_url() 这一行 - 如果选项卡为空则不起作用,例如 about:blank

【问题讨论】:

tab = self.get_current_url() 返回错误还是别的什么? 它返回 TimeoutException 而不是 self.get_current_url() 尝试 self.current_url 或 self.get_location() ***.com/questions/15985339/… 谢谢,但 self.current_url 也不起作用。以及 self.get_location() 使用 self.driver.current_url 时如何工作 【参考方案1】:

您已经切换到新标签以获取新标签的网址。让我们在这里举个例子。您打开了一个空白页面。

driver = webdriver.Chrome()
driver.get('https://www.yahoo.com')
windows_before  = driver.current_window_handle
driver.execute_script('''window.open('');'''.format("about:blank"))
windows_after = driver.window_handles
new_window = [x for x in windows_after if x != windows_before][0]
driver.switch_to.window(new_window)
print(driver.current_url)

【讨论】:

其实在self.focus_active_tab()我使用self.driver.switch_to.window(self.driver.window_handles[-1])切换到新标签 获取任意tab的url都没有问题。在 empty tab 带有“about:blank”的情况下获取 URL 会出现问题。 这个例子我得到了 url “about:blank” 如果你能分享一个例子,他们会有所帮助 您打开一个新的空标签。虽然我应该在单击链接后打开一个空选项卡而不是站点时处理这种情况。【参考方案2】:

我决定通过try ... except声明处理这个案子:

        try:
            tab = self.get_current_url()
        except TimeoutException:
            ...
            self.click(link)
            self.focus_active_tab()
            tab = self.get_current_url()

现在它对我有用,因为这是第二次打开链接(不是空的)。

但如果有人知道更好的解决方案,请分享。

【讨论】:

以上是关于如何使用 selenium 从空​​选项卡中获取 URL“about:blank”?的主要内容,如果未能解决你的问题,请参考以下文章

使用Selenium框架,如何在现有选项卡中执行进程?

如何使用 Selenium 4 (devTools) 从网络选项卡获取响应正文

如何在一个选项卡中使用 Selenium 和 Python 逐一运行测试?

如何使用 Selenium WebDriver 打开一个新选项卡并启动链接?

如何专注于第二个选项卡并使用 selenium webdriver 处理它

切换选项卡时,带有无头 chrome 的 Selenium 无法获取 url