检查RSelenium中的对话框

时间:2014-11-14 20:15:23

标签: r selenium-webdriver

我正在使用RSelenium访问工资页面。如果发生错误,有时可能会在页面上显示对话框。检查对话框是否显示的正确方法是什么,如果存在,则检索其内容?

这个问题实际上更为通用:许多函数如findElement在找不到元素时抛出异常。检查元素的最佳方法是什么?每个命令都有一个单独的tryCatch似乎很麻烦。

1 个答案:

答案 0 :(得分:3)

您选择的示例是带有框架的页面,因此首先需要将正确的框架切换为:

appURL <- "http://www.w3schools.com/js/tryit.asp?filename=tryjs_confirm"
library(RSelenium)
RSelenium::startServer()
remDr <- remoteDriver()
remDr$open()
remDr$navigate(appURL)
# This page has frames
remDr$switchToFrame(remDr$findElement("id", "iframeResult"))
webElem <- remDr$findElement("css", "button")
# visually confirm element
webElem$highlightElement()
# click the button to bring up alert
webElem$clickElement()

# Check the Alert text
> remDr$getAlertText()
[[1]]
[1] "Press a button!"
# Accept the alert. Equivalent to pressing the OK button.
remDr$acceptAlert()

根据具体情况,您还可能会发现sendKeysToAlert类的dismissAlertremoteDriver方法很有用。

更新:

作为错误处理代码的一部分RSelenium跟踪异常并为其分配状态代码。您可以随时尝试使用try进行调用,然后检查状态代码:

> try(remDr$findElement("id", "I DONT EXIST"), TRUE)
> remDr$status
[1] 7
> remDr$statusCodes[which(remDr$statusCodes$Code == remDr$status),]
  Code       Summary                                                                         Detail
3    7 NoSuchElement An element could not be located on the page using the given search parameters.