2017-06-20 11 views
0

RSeleniumを使用してこのWebサイトlinkをスクラップしようとしています。私はページ上のコンテンツのほとんどを掻き集めていましたが、「施設の訪問」と「施設の苦情」に行き着いていました。私はphantomjsとRSeleniumを使用している開発ツールでそれらを検査するとき、これらのボタンの両方がjavascriptのhrefを持っているので。RSelenium throw StaleElementReferenceエラー

私は正常にファントムを経由してページに移動できますが、私は$ getElementTextを使用してフィールドからテキストを抽出しようとするたびに、私は次のエラースローさ:

Selenium message:{"errorMessage":"Element does not exist in cache","request":{"headers":{"Accept":"application/json, text/xml, application/xml, */*","Accept-Encoding":"gzip, deflate","Host":"localhost:4444","User-Agent":"libcurl/7.53.1 r-curl/2.6 httr/1.2.1"},"httpVersion":"1.1","method":"GET","url":"/attribute/id","urlParsed":{"anchor":"","query":"","file":"id","directory":"/attribute/","path":"/attribute/id","relative":"/attribute/id","port":"","host":"","password":"","user":"","userInfo":"","authority":"","protocol":"","source":"/attribute/id","queryKey":{},"chunks":["attribute","id"]},"urlOriginal":"/session/c0f30500-55d0-11e7-96dd-3b147ee40d88/element/:wdc:1497974074536/attribute/id"}} 

Show Traceback 
Error: Summary: StaleElementReference Detail: An element command failed because the referenced element is no longer attached to the DOM. class: org.openqa.selenium.StaleElementReferenceException Further Details: run errorDetails method 

をし、私が使用して$ CURRENTURLと$スクリーンシップ(display = T)は、レンダリングされた正しいウェブサイトと正しいリンクを示します。

以下のコード私はそれが要素がDOMに添付されている方法とは何かを持って知っているが、私は

R

で問題を解決する方法がわからないです:あなたはおそらく取得している

url <- "https://dhs.arkansas.gov/dccece/cclas/FacilityInformation.aspx?FacilityNumber=23516" 
rd<-remoteDriver(browserName = 'phantomjs') 

rd$open() 

rd$navigate(url) 

webElem<- rd$findElement(using="xpath", value = '//*[@id="ctl00_ContentPlaceHolder1_lbtnVisits"]') 

webElem$clickElement() 

webElem$findElements('css',"#aspnetForm > div.page > div.main") 

webElem$getElementAttribute("id") 

答えて

2

webElemをクリックした結果、StaleElementReferenceとなりました。

webElem要素は、クリック後にDOMで変更される可能性が高いため、webElemを再度使用するとDOMに接続されなくなり、「無効」とみなされます。それがクリックされた後


簡単な修正は、単にwebElemを再配置することである。

webElem <- rd$findElement(... 
webElem$clickElement() 
webElem <- rd$findElement(... # re-locate webElem 
webElem$findElements('css',"#aspnetForm > div.page > div.main") 
関連する問題