8

R で RSelenium パッケージを使用して Web スクレイピングを行っています。Web ページを読み込んだ後、オブジェクトが Web ページに表示されているかどうかを確認する必要がある場合があります。例えば:

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")
}

私の質問は、「存在する」ためにどの関数を使用すればよいですか? 上記のコードは機能しません。これは単なる疑似コードです。「ID」を使用してオブジェクトをチェックするために機能するコードも見つけました。これは次のとおりです。

remDr$executeScript("return document.getElementById('hplogo').hidden;", args = list())

上記のコードは「id」に対してのみ機能しますが、「xpath」を使用して同じことを行うにはどうすればよいですか? ありがとう

4

1 に答える 1

6

要素が存在するかどうかを確認するには、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()して処理できNoSuchElementます。

于 2015-12-10T03:52:33.080 に答える