インデックスでフレーム選択することは出来るのですが
XPath を使用してフレーム選択を行いたいです
対象フレームのElementIDの取得はXPathで出来るのですが
エレメントのメソッドでフレーム選択に使用できそうなものは見つけられませんでした。
なにか方法はないのでしょうか?
PowerShell
1Class WebDriver{ 2 3 [Diagnostics.Process] $Process 4 [UInt16] $LocalPort 5 6 WebDriver([String] $WebDriver){ 7 $This.Process = start $WebDriver -WindowStyle Hidden -PassThru 8 do{ 9 $This.LocalPort = Get-NetTCPConnection -OwningProcess $This.Process.Id -LocalAddress "127.0.0.1" -State Listen -ErrorAction SilentlyContinue|% LocalPort 10 }while($This.LocalPort -eq 0) 11 } 12 13 [PsCustomObject] Get([String] $Url){ 14 $rst = Invoke-RestMethod -Method Get -uri "http://localhost:$($This.LocalPort)$Url" 15 return $rst.value 16 } 17 [PsCustomObject] Post([String] $Url, [PsCustomObject] $Arg){ 18 $Json = $Arg|ConvertTo-Json -Compress 19 $Body = [Text.Encoding]::UTF8.GetBytes($Json) 20 $rst = Invoke-RestMethod -Method Post -uri "http://localhost:$($This.LocalPort)$Url" -body $Body -ContentType Application/json 21 return $rst.value 22 } 23 [WebSession] NewSession(){ 24 $Body = @{capabilities=@{}} 25 $Result = $This.Post("/session",$Body) 26 return [WebSession]::new($This, $Result.SessionID) 27 } 28} 29 30Class WebSession{ 31 32 [WebDriver] $WebDriver 33 [String] $SessionID 34 35 WebSession([WebDriver] $WebDriver, [String] $SessionID){ 36 $This.WebDriver = $WebDriver 37 $This.SessionID = $SessionID 38 } 39 [PsCustomObject] NavigateTo([String] $Url){ 40 $body = @{url=$Url} 41 return $This.WebDriver.Post("/session/$($This.SessionID)/url",$body) 42 } 43 [PsCustomObject] SwitchToFrame([int] $id){ 44 $body = @{id = $id} 45 return $This.WebDriver.Post("/session/$($This.SessionID)/frame",$body) 46 } 47} 48 49Class WebElement{ 50 51 [WebDriver] $WebDriver 52 [WebSession] $WebSession 53 [String] $ElementID 54 55 WebElement([WebSession] $WebSession, [String] $ElementID){ 56 $This.WebDriver = $WebSession.WebDriver 57 $This.WebSession = $WebSession 58 $This.ElementID = $ElementID 59 } 60} 61 62 63$EdgeDriver = [WebDriver]::new(<msedgedriver.exeのパス>) 64$sess = $EdgeDriver.NewSession() 65$sess.NavigateTo("https://teratail.com/questions/351530") 66 67# インデックスでフレーム選択は出来る 68$sess.SwitchToFrame(1) 69 70# ホントはXPathで指定したい 71# //*[@id="google_ads_iframe_/83555300/leverages/teratail/pc_article_underarticleleft_0"] 72 73$EdgeDriver.Process.Kill()
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。