Кажется, нет никакого общего способа сделать это. Например, Firefox не предоставляет ничего о своих окнах через API специальных возможностей.
С Safari мне удалось найти URL, но он был немного скрыт в иерархии элементов пользовательского интерфейса. Например, в синтаксисе спецификатора объекта AppleScript этот объект:
UI element 2 of group 2 of toolbar 1 of window 1 of ¬
application process "Safari" of application "System Events"
Роль элемента - «AXSafariAddressAndSearchField», а его значением является URL. Если пользователь находится в процессе редактирования содержимого этого поля, его значение может отображать изменение, а не URL-адрес того, что фактически отображается. Я не знаю.
Также есть:
UI element 1 of scroll area 1 of group 1 of group 1 of ¬
tab group 1 of splitter group 1 of window 1 of ¬
application process "Safari" of application "System Events"
Это элемент, роль которого "AXWebArea". Он имеет атрибут «AXURL» (kAXURLAttribute
), значением которого является URL-адрес страницы.
Эти пути доступности могут отличаться для других версий Safari или разных конфигураций пользовательского интерфейса. (Например, в моем окне была открыта только одна вкладка.)
Возможно, вам придется написать код для перечисления всей иерархии элементов в поисках того, что вам нужно по роли.
Я не тестировал с Chrome. Однако я видел ссылку на «AXWebArea» в ее источниках, поэтому такая же стратегия может работать для него.