【问题标题】:How to convert windows IDs to human readable format using Selenium and Python如何使用 Selenium 和 Python 将 Windows ID 转换为人类可读的格式
【发布时间】:2022-01-23 10:26:01
【问题描述】:

我知道如果我想知道我当前打开的窗口的对应ID,我在Python上使用以下语句:

current_windows = driver.window_handles
print(current_windows)

输出(假设打开了 2 个窗口):

['CDwindow-807A80F3D56E82E4A61529E5898AC71C', 'CDwindow-7CEAB7D7E9B701F6279C4B5C4AEE1A29']

而且我也知道,如果我想在驱动中获取当前页面的标题,我在Python上使用如下语句:

current_window = driver.title
print(current_window)

输出:

Google

但是,这些windows的ID是我这种凡人都看不懂的,那么如何改进上面的句子来得到那些windows的标题呢?

我的意思是,要获得这样的输出,其中包含驱动程序中打开的当前窗口的所有标题:

['Google', 'Facebook']

【问题讨论】:

  • 我不认为这些十六进制值可以更改。但是,您始终可以使用driver.title 来获取当前窗口标题。通过查看代码return self.execute(Command.W3C_GET_CURRENT_WINDOW_HANDLE)['value'],假设返回十六进制值。

标签: python-3.x selenium selenium-webdriver window-handles webdriver-w3c-spec


【解决方案1】:

根据Window HandleWebDriver Specification

where,

每个浏览上下文都有一个关联的窗口句柄,它唯一 识别它。这必须是一个字符串,不能是“当前”。

Web 窗口标识符是字符串常量 “窗口-fcc6-11e5-b4f8-330a88ab9d7f”。

所以下面命令的输出:

current_windows = driver.window_handles
print(current_windows)

作为:

['CDwindow-807A80F3D56E82E4A61529E5898AC71C', 'CDwindow-7CEAB7D7E9B701F6279C4B5C4AEE1A29']

符合规范,既不包含page title 信息,也不能转换为任何人类可读的格式。

要检索页面标题,唯一的命令是:

print(driver.title)

【讨论】:

  • 我明白了,所以似乎一个可行的解决方案是遍历该 ID 数组,在每个窗口句柄之间切换,应用 driver.title 并将信息存储在一个数组中,然后返回第一个窗口句柄。
  • 是的,但尽量保持切换代码的​​优化:)
猜你喜欢
  • 2021-03-18
  • 1970-01-01
  • 1970-01-01
  • 2023-03-23
  • 2020-04-12
  • 2017-11-19
  • 1970-01-01
  • 2021-06-21
  • 2010-12-11
相关资源
最近更新 更多