点击使用Rselenium

时间:2016-12-22 23:52:34

标签: javascript r web-scraping href rselenium

我正在使用R,版本3.3.2。我想从这个网站上删除一些数据:http://www.dziv.hr/en/e-services/on-line-database-search/patents/

我正在使用Rselenium,我的代码如下:

webElem <- remDr$findElements("css", "iframe")
remDr$switchToFrame(webElem[[1]])
webel <- remDr$findElement(using = "xpath", "//input[@id = 'TB1']")$sendKeysToElement(list(as.character("*"), key = "enter"))
Sys.sleep(2)
windows_handles <- remDr$getWindowHandles()
Sys.sleep(1)
remDr$switchToWindow(windows_handles[[1]][[2]])

正如您在第三行出现新窗口后所看到的那样,我切换到这个新窗口。在这个新窗口中,我想点击页面底部的第二页,然后点击3,依此类推。我尝试了几种解决方案,例如:

remDr$findElement(using = "xpath", "//a[contains(text(),'2')]")$clickElement() 
remDr$findElement(using = "xpath", "//a[@style = 'color:#333333;']")$clickElement()
remDr$findElement(using = "xpath", "/html/body/form/div[3]/div[1]/div/table/tbody/tr[27]/td/table/tbody/tr/td[2]/a[@href]")$clickElement()

非此解决方案有效。我认为这是因为href中的javascript?如何执行此javascript并继续第二页?我知道executeScript()函数,但不知道如何使用它。

1 个答案:

答案 0 :(得分:0)

jdharrison回答了这个问题:

您可以使用function runTimeoutLoop(){ var x = 0; var interval = setInterval(function() { if (x >= 5) { // just change 5 to 30 console.log('Loop timeout ended'); return clearInterval(interval); } // do what ever you want console.log('Current x: '+x); x++; }, 5000); } 等选择页面...