Получение фрейма и переключение на него:
Вам нужно передать элемент iframe ( идентификатор аргумент) в SwitchToFrame
, тогда вы находитесь внутри этого документа и можете взаимодействовать с его содержимым. Нет необходимости .get
на этом с Selenium. Вы должны переключиться на .SwitchToDefaultContent
, чтобы вернуться к родительскому документу.
Вы можете идентифицировать данный iframe несколькими способами. Современные браузеры оптимизированы для селекторов CSS, поэтому я обычно использую их. CSS эквивалент
.FindElementByTag("iframe")
- это
.FindElementByCss("iframe")
Ваш iframe является первым (и единственным), поэтому я не стал бы собирать набор веб-элементов и индексировать их. Кроме того, вы хотите по возможности использовать короткий селектор одного элемента, чтобы повысить его эффективность.
VBA:
Option Explicit
Public Sub Example()
Dim d As WebDriver
Const URL As String = "https://www.rosterresource.com/mlb-roster-grid/"
Set d = New ChromeDriver
With d
.Start "Chrome"
.get URL
.SwitchToFrame .FindElementByCss("iframe")
Stop
.Quit
End With
End Sub
Запись в Excel (.AsTable.ToExcel
):
Что-то, что я только что обнаружил, нигде не видел документированно и восхищен тем, что существует метод записи таблицы непосредственно в Excel:
Option Explicit
Public Sub Example()
Dim d As WebDriver
Const URL As String = "https://www.rosterresource.com/mlb-roster-grid/"
Set d = New ChromeDriver
With d
.Start "Chrome"
.get URL
.SwitchToFrame .FindElementByTag("iframe")
.FindElementByCss(".waffle").AsTable.ToExcel ThisWorkbook.Worksheets("Sheet1").Range("A1")
Stop
.Quit
End With
End Sub