如何使用 xpath 检查网页中的对象是否可见?
How to check if an object is visible in a webpage by using its xpath?
我正在使用 R 中的 RSelenium 包进行网络抓取。有时在加载网页后,需要检查某个对象是否在网页中可见。例如:
library(RSelenium)
#open a browser
RSelenium::startServer()
remDr <- remoteDriver$new()
remDr <- remoteDriver(remoteServerAddr = "localhost"
, port = 4444
, browserName = "firefox")
remDr$open()
remDr$navigate("https://www.google.com")
#xpath for Google logo
x_path="/html/body/div/div[5]/span/center/div[1]/img"
我需要做这样的事情:
if (exist(remDr$findElement(using='xpath',x_path))){
print("Logo Exists")
}
我的问题是 "exist" 应该使用什么函数?上面的代码不起作用,它只是一个伪代码。
我还找到了一个代码,可以使用 "id" 检查对象,这里是:
remDr$executeScript("return document.getElementById('hplogo').hidden;", args = list())
以上代码仅适用于 "id",我应该如何使用 "xpath" 执行相同的操作?
谢谢
要检查一个元素是否存在,使用findElements()
方法。如果没有找到与定位器匹配的元素,它将 return 一个空列表 - 一个空列表是 "falsy" 根据定义 :
if (length(remDr$findElements(using='xpath', x_path))!=0) {
print("Logo Exists")
}
要检查元素是否可见,请使用 isElementDisplayed()
:
webElems <- remDr$findElements(using='xpath', x_path)
if (webElems) {
webElem <- webElems[0]
if (webElem$isElementDisplayed()[[1]]) {
print("Logo is visible")
} else {
print("Logo is present but not visible")
}
} else {
print("Logo is not present")
}
要检查是否存在,或者可以使用 findElement()
并处理 NoSuchElement
异常,而不是 findElements()
。
我正在使用 R 中的 RSelenium 包进行网络抓取。有时在加载网页后,需要检查某个对象是否在网页中可见。例如:
library(RSelenium)
#open a browser
RSelenium::startServer()
remDr <- remoteDriver$new()
remDr <- remoteDriver(remoteServerAddr = "localhost"
, port = 4444
, browserName = "firefox")
remDr$open()
remDr$navigate("https://www.google.com")
#xpath for Google logo
x_path="/html/body/div/div[5]/span/center/div[1]/img"
我需要做这样的事情:
if (exist(remDr$findElement(using='xpath',x_path))){
print("Logo Exists")
}
我的问题是 "exist" 应该使用什么函数?上面的代码不起作用,它只是一个伪代码。 我还找到了一个代码,可以使用 "id" 检查对象,这里是:
remDr$executeScript("return document.getElementById('hplogo').hidden;", args = list())
以上代码仅适用于 "id",我应该如何使用 "xpath" 执行相同的操作? 谢谢
要检查一个元素是否存在,使用findElements()
方法。如果没有找到与定位器匹配的元素,它将 return 一个空列表 - 一个空列表是 "falsy" 根据定义 :
if (length(remDr$findElements(using='xpath', x_path))!=0) {
print("Logo Exists")
}
要检查元素是否可见,请使用 isElementDisplayed()
:
webElems <- remDr$findElements(using='xpath', x_path)
if (webElems) {
webElem <- webElems[0]
if (webElem$isElementDisplayed()[[1]]) {
print("Logo is visible")
} else {
print("Logo is present but not visible")
}
} else {
print("Logo is not present")
}
要检查是否存在,或者可以使用 findElement()
并处理 NoSuchElement
异常,而不是 findElements()
。