2016-08-11 15 views
1

Я работаю с RSelenium весь день и все еще нажимаю дорожные блоки здесь и там. Моя текущая проблема заключается в использовании кода WebElemReports$clickElement(), который нажимает на ссылку и открывает новое окно. Я попытался настроить настройки Firefox в «about: config», чтобы он не открывал новое окно. Он не открывает окно в обычном режиме, но с использованием RSelenium он все еще открывает новое окно. Я также посмотрел на этот подход, но не мог следовать логике, как она работала:RSelenium: Переключение Windows с помощью оконной ручки

How to clickElement() and open the link in the same tab

Мой следующий мыслительный процесс должен был использовать функцию switchToWindow() вместе с getWindowHandles(). Код, который я написал следующим образом:

remDr$closeWindow() 
windHand <- remDr$getWindowHandles() 
remDr$switchToWindow(windHand) 

Мое мышление является то, что я буду закрывать текущее окно, так что там будет только один дескриптор для ссылки и передать дескриптор функции switchToWindow. Я не могу найти много switchToWindow документации для R. Я получаю следующее сообщение об ошибке с помощью кода выше:

Error: Summary: UnknownError Detail: An unknown server-side error occurred while processing the command. class: org.openqa.selenium.WebDriverException

Любая помощь на этом была бы оценена - я попытался исследовать это как можно больше, так это не будет отмечен как дублирующий вопрос, как мой последний пост. Большое спасибо.

+0

Вы можете поделиться HTML код этой ссылки? Также попробуйте распечатать переменную windHand и посмотреть, что в ней? Есть ли ценность или больше? Посмотрите раздел на switchToWindow в конце на этой странице - https://cran.r-project.org/web/packages/RSelenium/vignettes/RSelenium-basics.html – Grasshopper

+0

Привет, для WindHand вывод следующий: ' > windHand <- remDr $ getWindowHandles() ',' windHand' '[[1]]', ' [1] "{ccdc1fb0-d9c8-4bc7-a5d0-b69b1027cf8a}"', Я извиняюсь, но не могу Не разделяйте HTML. –

+0

Имеет ли тег ссылки атрибут цели? Если да, то в чем ценность в нем? – Grasshopper

ответ

3

На самом деле вы не можете закрыть главное окно, вы можете переключиться на дочернем окне, как показано ниже: -

# 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]]) 
+1

спасибо! Сначала я подумал, что это не работает, пока я не подтвердил, что находится в правильной ручке окна. Затем я обнаружил, что дочернее окно, в отличие от родительского окна, имеет фреймы. Поэтому мне пришлось работать через рамки. –

+1

Это ошибка в версии, которую я сейчас использую. Строка 'for (window in windows [[1]]) {' должна быть 'for (window in windows) {' –