gpt4 book ai didi

r - 如何使用 xpath 检查某个对象在网页中是否可见?

转载 作者:行者123 更新时间:2023-12-03 03:28:15 24 4
gpt4 key购买 nike

我正在 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()方法。如果没有找到与定位器匹配的元素,它将返回一个空列表 - 根据定义,空列表是“假的”:

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")
}
<小时/>

检查是否存在,或者代替 findElements() ,您可以使用findElement()和 handle NoSuchElement异常。

关于r - 如何使用 xpath 检查某个对象在网页中是否可见?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34144108/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com