RSelenium:使用窗口句柄切换窗口

d84*_*nj4 2 selenium r window-handles web-scraping rselenium

我一整天都在使用 RSelenium,但仍然在这里和那里遇到障碍。我当前的问题是使用WebElemReports$clickElement()单击链接并打开一个新窗口的代码。我试图在“about:config”中调整 Firefox 设置,这样它就不会打开一个新窗口。它在正常使用中不会打开一个窗口,但是使用 RSelenium 时,它仍然会打开一个新窗口。我也研究过这种方法,但无法遵循其工作原理:

如何单击Element()并在同一选项卡中打开链接

我的下一个思考过程是将 switchToWindow() 函数与 getWindowHandles() 一起使用。我写的代码如下:

remDr$closeWindow()
windHand <- remDr$getWindowHandles()
remDr$switchToWindow(windHand)
Run Code Online (Sandbox Code Playgroud)

我的想法是我将关闭当前窗口,以便只有一个句柄可以引用并将该句柄传递给 switchToWindow 函数。我找不到 R 的很多 switchToWindow 文档。使用上面的代码时收到以下错误:

错误:摘要:未知错误详细信息:处理命令时发生未知的服务器端错误。类:org.openqa.selenium.WebDriverException

对此的任何帮助将不胜感激 - 我试图尽可能多地研究这个问题,所以这不会像我上一篇文章那样被标记为重复的问题。非常感谢。

Sau*_*aur 5

实际上你不能关闭主窗口,你可以切换到子窗口,如下所示:-

# get main window and store to switch back
currWindow <-  remDr$getCurrentWindowHandle()

#gel all windows 
windows <- remDr$getWindowHandles()

#loop through switching child window 
for (window in windows[[1]]) {
  if (window != currWindow[[1]]) 
    remDr$switchToWindow(window)
}

#now do your stuff with child window 

#now close your child window after doing all stuff
remDr$closeWindow()

#now switch back to main window for further stuff 
remDr$switchToWindow(currWindow[[1]])
Run Code Online (Sandbox Code Playgroud)

  • 这是我目前使用的版本中的错误。`for (window in windows[[1]]) {` 应该是 `for (window in windows) {` (4认同)