Thursday, June 11, 2020

Extracting information from a dynamic webpage with RSelenium - II(corrected)


From the experience of working with RSelenium for extracting information for the last two cases and case-1, the workflow for extracting information for all cases is:
(i) Create a text file of codes for identifying cases from the MOHS webpage.
(ii) Read-in the text file into R.
(iii) Create a vector of values for xpath locators using the imported case codes of (ii)
(iv) Create a list object into which the case information will be appended.
(v) Access the information for case-151 and 150 and append them first into the list.
(vi) Loop through all cases except case-151 and 150, and extract their information and populate the list of (iv), and it is done.

Create a text file of codes for cases

The page source of COVID-19 Contact Tracing and Reporting webpage is viewed with the Chrome browser and saved to disk. This file is opened with Notepad++ and column of codes was extracted and saved into a csv file with one column and column name = “ccode”.

Create a vector of values for xpath locators

From my last post, the syntax for the location of case-1 was:
case_1 <- rD$findElement(using = 'xpath', "//*[@value = '528']")
So the value for xpath locater could be created as:
# read file
xcc <- read.csv("caseCode.txt",encoding = "UTF-8")
# create vector
xps <- list("//*[@value = '", xcc$ccode, "']")
tmp0 <- do.call(paste0, xps)
# to exclude case-151 and 150
tmp <- tmp0[-(1:2)]
Then I went on to extract the information for the reported Covid-19 confirmed cases. But however much I tried, I couldn’t get info for case-7. After a lot of frustrations, I found that the list of codes for cases I constructed out from the inspection of webpage source included a “>” character I failed to remove! See item [134] below:
[130] "//*[@value = '4474']"  "//*[@value = '247']"   "//*[@value = '5881']" 
[133] "//*[@value = '4949']"  "//*[@value = '474>']"  "//*[@value = '8381']" 
[136] "//*[@value = '4655']"  "//*[@value = '6229']"  "//*[@value = '817']"  
[139] "//*[@value = '5037']"  "//*[@value = '528']"  
It was corrected:
# read file
xcc <- read.csv("caseCode.txt",encoding = "UTF-8")
# create vector
xps <- list("//*[@value = '", xcc$ccode, "']")
tmp0 <- do.call(paste0, xps)
tmp <- tmp0[-(1:2)]
tmp[c(1:10,131:140)]
 [1] "//*[@value = '10131']" "//*[@value = '10130']" "//*[@value = '10129']"
 [4] "//*[@value = '10128']" "//*[@value = '10122']" "//*[@value = '10120']"
 [7] "//*[@value = '10114']" "//*[@value = '10113']" "//*[@value = '10112']"
[10] "//*[@value = '10110']" "//*[@value = '247']"   "//*[@value = '5881']" 
[13] "//*[@value = '4949']"  "//*[@value = '474']"   "//*[@value = '8381']" 
[16] "//*[@value = '4655']"  "//*[@value = '6229']"  "//*[@value = '817']"  
[19] "//*[@value = '5037']"  "//*[@value = '528']"  

Retrieve information on case-151 and 150 and populate the list

#  docker run -d -p 4445:4444 selenium/standalone-chrome
# Load the Library
library(RSelenium)
# start the server and browser(you can use other browsers here)
rD <- remoteDriver(remoteServerAddr = "localhost",
                      port = 4445L,
                      browserName = "chrome")
rD$open()
[1] "Connecting to remote server"
$acceptInsecureCerts
[1] FALSE

$browserName
[1] "chrome"

$browserVersion
[1] "81.0.4044.138"

$chrome
$chrome$chromedriverVersion
[1] "81.0.4044.138 (8c6c7ba89cc9453625af54f11fd83179e23450fa-refs/branch-heads/4044@{#999})"

$chrome$userDataDir
[1] "/tmp/.com.google.Chrome.A4ou0H"


$`goog:chromeOptions`
$`goog:chromeOptions`$debuggerAddress
[1] "localhost:37115"


$networkConnectionEnabled
[1] FALSE

$pageLoadStrategy
[1] "normal"

$platformName
[1] "linux"

$proxy
named list()

$setWindowRect
[1] TRUE

$strictFileInteractability
[1] FALSE

$timeouts
$timeouts$implicit
[1] 0

$timeouts$pageLoad
[1] 300000

$timeouts$script
[1] 30000


$unhandledPromptBehavior
[1] "dismiss and notify"

$`webauthn:virtualAuthenticators`
[1] TRUE

$webdriver.remote.sessionid
[1] "156cb2e11b18b98a044b922b81f8ac2a"

$id
[1] "156cb2e11b18b98a044b922b81f8ac2a"
# navigate to URL for MOHS contact tracing and reporting
rD$navigate("https://mohs.gov.mm/page/8509")
An empty list for storing the information on cases is created and populated first with the last two cases.
cseTexts.a <- c()

cse151.a <- rD$findElement(using="css selector", ".nav-tabs > li:nth-child(1) > a:nth-child(1)")
cse151.a$clickElement()
t151.a <- rD$findElement(using="css selector", "#Post_10137")
cseTexts.a <- append(cseTexts.a,t151.a$getElementText())
#cat(cseTexts.a[[1]])

cse150.a <- rD$findElement(using="css selector", ".nav-tabs > li:nth-child(2) > a:nth-child(1)")
cse150.a$clickElement()
t150.a <- rD$findElement(using="css selector", "#Post_10135")
cseTexts.a <- append(cseTexts.a,t150.a$getElementText())
#cat(cseTexts.a[[2]])

Retrieving information for all cases except for case-151 and 150

To try retrieving information for other cases, I have to locate the “View More” tab, and click on it to open the select case dropdown list.
# find element view more
csey.1 <- rD$findElement(using="css selector", "#recentcase li:nth-child(3) a")
rD$screenshot(display = TRUE)
# click view more and "select the case box" is opened
csey.1$clickElement()
rD$screenshot(display = TRUE)
# after clicking  view more  find "#select2-slcase-container"
cseM.1 <- rD$findElement(using="css selector","#select2-slcase-container") 
cseM.1$clickElement()      # need to click caseM to open
Even with increase in sys.sleep I still get duplicates and missed cases! Seems I still need to give more time for Sys.sleep() somewhere. And for reruns, it would be wise to run the cases in parts (here part-b and c with 70 cases each).
Sys.sleep(2)
cseEle2 <- list()
N <- length(tmp)
system.time({
for (i in 1:N) {
    cseEle2[[i]] <- rD$findElements(using = 'xpath', tmp[i])
    Sys.sleep(1)
}
})
   user  system elapsed 
   1.75    0.04  144.81 
Sys.sleep(2)
cseEle2.u <- unlist(cseEle2)
Sys.sleep(2)
Part-b:
Sys.sleep(2)
cseTexts.b <- c()
cseEle2.ub <- cseEle2.u[1:70]
system.time({
for(cse2b in cseEle2.ub){
  cse2b
  Sys.sleep(1)
  cse2b$clickElement()
  t2b <- rD$findElement(using = 'css selector', "#OtherCase_Info")
  Sys.sleep(1)
  t2b$clickElement()
  cseTexts.b <- append(cseTexts.b,t2b$getElementText()[[1]])
  Sys.sleep(2)
}
})
   user  system elapsed 
   1.94    0.02  289.53 
length(cseTexts.b)
[1] 70
utf8::utf8_print(unlist(cseTexts.b))
 [1] "C - 149 ဓာတ်ခွဲအတည်ပြုလူနာ\nအသက် - (၁၅) နှစ်၊ ကျား\nနေရပ်လိပ်စာ - တောင်ဉက္ကလာပမြို့နယ်၊…"
 [2] "C - 148 ဓာတ်ခွဲအတည်ပြုလူနာ\nအသက် - (၁၉) နှစ်၊ ကျား\nနေရပ်လိပ်စာ - တောင်ဉက္ကလာပမြို့နယ်၊…"
 [3] "C - 147 ဓာတ်ခွဲအတည်ပြုလူနာ\nအသက် - (၄၃) နှစ်၊ ကျား\nနေရပ်လိပ်စာ - တာမွေမြို့နယ်၊ ရန်ကုန်တို…"
 [4] "C - 146 ဓာတ်ခွဲအတည်ပြုလူနာ\nအသက် - (၃၂) နှစ်၊ ကျား (C-139 ၏ အတူနေမိသားစုဝင်)\nနေရပ်…"
 [5] "C - 145 ဓာတ်ခွဲအတည်ပြုလူနာ\nအသက် - (၄၈) နှစ်၊ ကျား\nလက်ရှိနေရပ်လိပ်စာ - စစ်ကိုင်းမြို့နယ်၊ စ…"
 [6] "C - 144 ဓာတ်ခွဲအတည်ပြုလူနာ\nအသက် - (၂၄) နှစ်၊ ကျား\nနေရပ်လိပ်စာ -မိုးညှင်းမြို့နယ်၊ ကချင်…" 
 [7] "C - 143 ဓာတ်ခွဲအတည်ပြုလူနာ\nအသက် - (၈၇) နှစ်၊ မ\nနေရပ်လိပ်စာ -မူဆယ်မြို့၊ ရှမ်းပြည်နယ်မြော…"
 [8] "C - 142 ဓာတ်ခွဲအတည်ပြုလူနာ\nအသက် - (၃၅) နှစ်၊ ကျား\nနေရပ်လိပ်စာ - ဒဂုံမြို့သစ်အရှေ့ပိုင်း၊ ရ…"
 [9] "C - 141 ဓာတ်ခွဲအတည်ပြုလူနာ\nအသက် - (၂၈) နှစ်၊ ကျား\nနေရပ်လိပ်စာ -အင်းစိန်မြို့နယ်၊ ရန်ကုန်တို…"
[10] "C - 140 ဓာတ်ခွဲအတည်ပြုလူနာ\nအသက် - (၃၉) နှစ်၊ မ\nနေရပ်လိပ်စာ - လှိုင်မြို့နယ်၊ ရန်ကုန်တိုင်းဒေသ…"
[11] "C - 139 ဓာတ်ခွဲအတည်ပြုလူနာ\nအသက် - (၂၆) နှစ်၊ မ\nနေရပ်လိပ်စာ - ကမာရွတ်မြို့နယ်၊ ရန်ကုန်တိုင်း…"
[12] "C - 138 ဓာတ်ခွဲအတည်ပြုလူနာ\nအသက် - (၅၃) နှစ်၊ ကျား\nနေရပ်လိပ်စာ - ဒဂုံမြို့နယ်၊ ရန်ကုန်တိုင်း…"
[13] "C - 137 ဓာတ်ခွဲအတည်ပြုလူနာ\nအသက် - (၃၁) နှစ်၊ မ\nနေရပ်လိပ်စာ - လှိုင်မြို့နယ်၊ ရန်ကုန်တိုင်းဒေသ…"
[14] "C - 136 ဓာတ်ခွဲအတည်ပြုလူနာ\nအသက် - (၂၅) နှစ်၊ ကျား\nနေရပ်လိပ်စာ - ကျောက်တံတားမြို့နယ်၊ …"
[15] "C - 135 ဓာတ်ခွဲအတည်ပြုလူနာ\nအသက် - (၃၅) နှစ်၊ မ\nနေရပ်လိပ်စာ - ကျောက်တံတားမြို့နယ်၊ ရန်ကု…"
[16] "C - 134 ဓာတ်ခွဲအတည်ပြုလူနာ\nအသက် - (၃၅) နှစ်၊ ကျား\nနေရပ်လိပ်စာ - တာမွေမြို့နယ်၊ ရန်ကုန်တို…"
[17] "C - 133 ဓာတ်ခွဲအတည်ပြုလူနာ\nအသက် - (၄၅) နှစ်၊ ကျား\nနေရပ်လိပ်စာ - ပန်းပဲတန်းမြို့နယ်၊ ရန်…"
[18] "C - 132 ဓာတ်ခွဲအတည်ပြုလူနာ\nအသက် - (၈၀) နှစ်၊ ကျား\nနေရပ်လိပ်စာ -   မတ္တရာမြို့နယ်၊ မန္…"
[19] "C - 131 ဓာတ်ခွဲအတည်ပြုလူနာ\nအသက် - (၂၈) နှစ်၊ မ\nနေရပ်လိပ်စာ -   မရမ်းကုန်းမြို့နယ်၊ ရန်ကု…"
[20] "C - 130 ဓာတ်ခွဲအတည်ပြုလူနာ\nအသက် - (၆၅) နှစ်၊ မ (C-94 ၏ အတူနေမိသားစုဝင်)\nနေရပ်လိပ်စာ…"
[21] "C - 129 ဓာတ်ခွဲအတည်ပြုလူနာ\nအသက် - (၃၁) နှစ်၊ မ\nနေရပ်လိပ်စာ -    သာကေတမြို့နယ်၊ ရန်ကုန်…"
[22] "C - 128 ဓာတ်ခွဲအတည်ပြုလူနာ\nအသက် - (၅၄) နှစ်၊ ကျား\nနေရပ်လိပ်စာ - တောင်ဥက္ကလာပမြို့နယ်၊…"
[23] "C - 127 ဓာတ်ခွဲအတည်ပြုလူနာ\nအသက် - (၂၄) နှစ်၊ မ\nနေရပ်လိပ်စာ -   အင်းစိန်မြို့နယ်၊ ရန်ကုန်တို…"
[24] "C - 126 ဓာတ်ခွဲအတည်ပြုလူနာ\nအသက် - ( ၄၇ ) နှစ်၊ ကျား\nနေရပ်လိပ်စာ - တာမွေမြို့နယ်၊ ရန်ကု…"
[25] "C - 125 ဓာတ်ခွဲအတည်ပြုလူနာ\nအသက် - ( ၁၈ ) နှစ်၊ ကျား\nနေရပ်လိပ်စာ -     ဗိုလ်တစ်ထောင်…" 
[26] "C - 124 ဓာတ်ခွဲအတည်ပြုလူနာ\nအသက် - (၄၅) နှစ် ၊ ကျား (C-089 ၏ ယာဉ်မောင်း)\nနေရပ်လိပ်…"
[27] "C - 123 ဓာတ်ခွဲအတည်ပြုလူနာ\nအသက် - (၁၈) နှစ်၊ မ\nနေရပ်လိပ်စာ -အင်းစိန်မြို့နယ်၊ ရန်ကုန်တိုင်း…" 
[28] "C - 122 ဓာတ်ခွဲအတည်ပြုလူနာ\nအသက် - (၂၈) နှစ်၊ ကျား\nနေရပ်လိပ်စာ - သာကေတမြို့နယ်၊ ရန်ကုန်…"
[29] "C - 121 ဓာတ်ခွဲအတည်ပြုလူနာ\nအသက် - (၂၁) နှစ်၊ မ\nနေရပ်လိပ်စာ - တောင်ကြီးမြို့၊ ရှမ်းပြည်န…"
[30] "C - 120 ဓာတ်ခွဲအတည်ပြုလူနာ\nအသက် - (၂၁) နှစ်၊ မ\nနေရပ်လိပ်စာ - ဒဂုံမြို့သစ် (အရှေ့)၊ ရန်ကုန်…"
[31] "C - 119 ဓာတ်ခွဲအတည်ပြုလူနာ\nအသက် - (၃၁) နှစ်၊ မ\nနေရပ်လိပ်စာ - ပြည်မြို့၊ ပဲခူးတိုင်းဒေသကြီ…"
[32] "C - 118 ဓာတ်ခွဲအတည်ပြုလူနာ\nအသက် - (၃၁) နှစ်၊ မ\nနေရပ်လိပ်စာ - ပြည်မြို့၊ ပဲခူးတိုင်းဒေသကြီ…"
[33] "C - 117 ဓာတ်ခွဲအတည်ပြုလူနာ\nအသက် - ( ၁၀) နှစ်၊ မ (C-88 ၏ သမီး)\nနေရပ်လိပ်စာ - ကလေး…"
[34] "C - 116 ဓာတ်ခွဲအတည်ပြုလူနာ\nအသက် - ( ၁၇) နှစ်၊ ကျား (C-88 ၏ သား)\nနေရပ်လိပ်စာ - က…"
[35] "C - 115 ဓာတ်ခွဲအတည်ပြုလူနာ\nအသက် - ( ၁၉) နှစ်၊ ကျား (C-88 ၏ သား)\nနေရပ်လိပ်စာ - က…"
[36] "C - 114 ဓာတ်ခွဲအတည်ပြုလူနာ\nအသက် - ( ၅၂) နှစ်၊ ကျား (C-88 ၏ ခင်ပွန်း)\nနေရပ်လိပ်စာ -…"
[37] "C - 113 ဓာတ်ခွဲအတည်ပြုလူနာ\nအသက် - (၆၅) နှစ်၊ မ (C-78 ၏ဇနီး)\nနေရပ်လိပ်စာ - တီးတိန်မြို့…"
[38] "C - 112 ဓာတ်ခွဲအတည်ပြုလူနာ\nအသက် - (၂၉) နှစ်၊ ကျား\nနေရပ်လိပ်စာ - တာချီလိတ်မြို့နယ်၊ ရှမ်း…"
[39] "C - 111 ဓာတ်ခွဲအတည်ပြုလူနာ\nအသက် - (၅၉) နှစ်၊ မ\nနေရပ်လိပ်စာ - လှိုင်သာယာမြို့နယ်၊ ရန်ကုန်တိုင်…"
[40] "C - 110 ဓာတ်ခွဲအတည်ပြုလူနာ\nအသက် - (၆၃) နှစ်၊ ကျား\nနေရပ်လိပ်စာ - ဗိုလ်တစ်ထောင်မြို့နယ်၊ ရ…"
[41] "C - 109 ဓာတ်ခွဲအတည်ပြုလူနာ\nအသက် - (၃၇) နှစ်၊ ကျား\nနေရပ်လိပ်စာ - သင်္ကန်းကျွန်းမြို့နယ်၊ …"
[42] "C - 108 ဓာတ်ခွဲအတည်ပြုလူနာ\nအသက် - (၈၅) နှစ်၊ မ (C-105 ၏မိခင်)\nနေရပ်လိပ်စာ - မရမ်းကု…"
[43] "C - 107 ဓာတ်ခွဲအတည်ပြုလူနာ\nအသက် - (၅၄) နှစ်၊ မ (Case-101 ၏ဇနီး)\nနေရပ်လိပ်စာ - ဒဂု…"
[44] "C - 106 ဓာတ်ခွဲအတည်ပြုလူနာ\nအသက် - (၂၆) နှစ်၊ ကျား\nနေရပ်လိပ်စာ - ဗိုလ်တထောင်မြို့နယ်၊ ရန်…"
[45] "C - 105 ဓာတ်ခွဲအတည်ပြုလူနာ\nအသက် - (၄၄) နှစ်၊ မ (C-86 ၏ဇနီး)\nနေရပ်လိပ်စာ - မရမ်းကုန်…"
[46] "C - 104 ဓာတ်ခွဲအတည်ပြုလူနာ\nအသက် - (၃၅) နှစ်၊ မ\nနေရပ်လိပ်စာ - ကမာရွတ်မြို့နယ်၊ ရန်ကုန်တိုင်း…"
[47] "C - 103 ဓာတ်ခွဲအတည်ပြုလူနာ\nအသက် - (၃၁) နှစ်၊ ကျား\nနေရပ်လိပ်စာ - မရမ်းကုန်းမြို့နယ်၊ ရန်…"
[48] "C - 102 ဓာတ်ခွဲအတည်ပြုလူနာ\nအသက် - (၄၂) နှစ်၊ ကျား\nနေရပ်လိပ်စာ - တောင်ဉက္ကလာပမြို့နယ်၊…"
[49] "C - 101 ဓာတ်ခွဲအတည်ပြုလူနာ\nအသက် - (၆၀) နှစ်၊ ကျား (Case-107 ၏ခင်ပွန်း)\nနေရပ်လိပ်စာ…"
[50] "C - 100 ဓာတ်ခွဲအတည်ပြုလူနာ\nအသက် - (၄၄) နှစ်၊ ကျား\nနေရပ်လိပ်စာ - ဒေါပုံမြို့နယ်၊ ရန်ကုန်တို…"
[51] "C - 99 ဓာတ်ခွဲအတည်ပြုလူနာ\nအသက် - (၃၈) နှစ်၊ ကျား\nနေရပ်လိပ်စာ - ဒေါပုံမြို့နယ်၊ ရန်ကုန်တိုင်…"
[52] "C - 98 ဓာတ်ခွဲအတည်ပြုလူနာ\nအသက် - (၂၀) နှစ်၊  မ\nနေရပ်လိပ်စာ - မရမ်းကုန်းမြို့နယ်၊ ရန်ကုန်တို…"
[53] "C - 97 ဓာတ်ခွဲအတည်ပြုလူနာ\nအသက် - (၄၃) နှစ်၊ မ\nနေရပ်လိပ်စာ - မင်္ဂလာဒုံမြို့နယ်၊ ရန်ကုန်တိုင်း…"
[54] "C - 96 ဓာတ်ခွဲအတည်ပြုလူနာ\nအသက် - (၄၃) နှစ်၊ ကျား\nနေရပ်လိပ်စာ - တာချီလိတ်မြို့နယ်၊ ရှမ်း…" 
[55] "C - 95 ဓာတ်ခွဲအတည်ပြုလူနာ\nအသက် - (၁)နှစ် (၆)လ၊ ကျား\nနေရပ်လိပ်စာ - ပန်းဘဲတန်းမြို့နယ်၊ …"
[56] "C - 94 ဓာတ်ခွဲအတည်ပြုလူနာ\nအသက် - (၃၉) နှစ်၊ ကျား\nနေရပ်လိပ်စာ - အင်းစိန်မြို့နယ်၊ ရန်ကုန်တို…"
[57] "C - 93 ဓာတ်ခွဲအတည်ပြုလူနာ\nအသက် - (၃၆) နှစ်၊ ကျား\nနေရပ်လိပ်စာ - အင်းစိန်မြို့နယ်၊ ရန်ကုန်တို…"
[58] "C - 92 ဓာတ်ခွဲအတည်ပြုလူနာ\nအသက် - (၂၄) နှစ်၊ ကျား\nနေရပ်လိပ်စာ -စမ်းချောင်းမြို့နယ်၊ ရန်…"
[59] "C - 91 ဓာတ်ခွဲအတည်ပြုလူနာ\nအသက် - (၆၀) နှစ်၊ ကျား (C-47, C-89, C-90 ၏ မိသားစုဝင်)…"
[60] "C - 90 ဓာတ်ခွဲအတည်ပြုလူနာ\nအသက် - (၅၇) နှစ်၊ မ (C-47, C-89, C-91 ၏ မိသားစုဝင်)\n…" 
[61] "C - 89 ဓာတ်ခွဲအတည်ပြုလူနာ\nအသက် - (၅၀) နှစ်၊ ကျား (C-47 ၏ ခင်ပွန်း)\nနေရပ်လိပ်စာ - …" 
[62] "C - 88 ဓာတ်ခွဲအတည်ပြုလူနာ\nအသက် - (၄၇) နှစ်၊ မ\nနေရပ်လိပ်စာ - ကလေးမြို့၊ စစ်ကိုင်းတိုင်းဒေသ…"
[63] "C - 87 ဓာတ်ခွဲအတည်ပြုလူနာ\nအသက် - (၆၂) နှစ်၊ ကျား\nနေရပ်လိပ်စာ - တာမွေမြို့နယ်၊ ရန်ကုန်တိုင်…"
[64] "C - 86 ဓာတ်ခွဲအတည်ပြုလူနာ\nအသက် - (၇၈) နှစ်၊ ကျား (C-105 ၏ ခင်ပွန်း)\nနေရပ်လိပ်စာ - …"
[65] "C - 85 ဓာတ်ခွဲအတည်ပြုလူနာ\nအသက် - (77) နှစ်၊ ကျား\nနေရပ်လိပ်စာ - တောင်ဒဂုံမြို့နယ်၊ ရန်ကုန်…"
[66] "C - 84 ဓာတ်ခွဲအတည်ပြုလူနာ\nအသက် - (၄၀) နှစ်၊ ကျား\nနေရပ်လိပ်စာ - အင်းစိန်မြို့နယ်၊ ရန်ကုန်တို…"
[67] "C - 83 ဓာတ်ခွဲအတည်ပြုလူနာ\nအသက် - (၆၃) နှစ်၊ ကျား\nနေရပ်လိပ်စာ - ပုဇွန်တောင်မြို့နယ်၊ ရန်ကု…"
[68] "C - 82 ဓာတ်ခွဲအတည်ပြုလူနာ\nအသက် - (၃၈) နှစ်၊ မ\nနေရပ်လိပ်စာ - အောင်မြေသာစံမြို့နယ်၊ မန္တ…"
[69] "C - 81 ဓာတ်ခွဲအတည်ပြုလူနာ\nအသက် - (၂၈)နှစ်၊ မ\nနေရပ်လိပ်စာ - လှိုင်သာယာမြို့နယ်၊ ရန်ကုန်တိုင်း…" 
[70] "C - 80 ဓာတ်ခွဲအတည်ပြုလူနာ\nအသက် - (၂၈) နှစ်၊ ကျား\nနေရပ်လိပ်စာ - လှိုင်သာယာမြို့နယ်၊ ရန်ကုန်…"
Part-c:
Sys.sleep(2)
cseTexts.c <- c()
cseEle2.uc <- cseEle2.u[71:140]
system.time({
for(cse2c in cseEle2.uc){
  cse2c
  Sys.sleep(1)
  cse2c$clickElement()
  t2c <- rD$findElement(using = 'css selector', "#OtherCase_Info")
  Sys.sleep(2)
  t2c$clickElement()
  cseTexts.c <- append(cseTexts.c,t2c$getElementText()[[1]])
  Sys.sleep(2)
}
})
   user  system elapsed 
   1.84    0.00  359.07 
length(cseTexts.c)
[1] 70
utf8::utf8_print(unlist(cseTexts.c))
 [1] "C - 79 ဓာတ်ခွဲအတည်ပြုလူနာ\nအသက် - (၄၃) နှစ်၊ ကျား\nနေရပ်လိပ်စာ - ဗဟန်းမြို့နယ်၊ ရန်ကုန်တိုင်…"
 [2] "C - 78 ဓာတ်ခွဲအတည်ပြုလူနာ\nအသက် - (၆၉) နှစ်၊ ကျား\nနေရပ်လိပ်စာ - တီးတိန်မြို့နယ်၊ ချင်းပြ…"
 [3] "C - 77 ဓာတ်ခွဲအတည်ပြုလူနာ\nအသက် - (၃၃) နှစ်၊ မ\nနေရပ်လိပ်စာ - စမ်းချောင်းမြို့နယ်၊ ရန်ကုန်…"
 [4] "C - 76 ဓာတ်ခွဲအတည်ပြုလူနာ\nအသက် - (၂၀) နှစ်၊ ကျား\nနေရပ်လိပ်စာ -အလုံမြို့နယ်၊ ရန်ကုန်တိုင်းဒေ…"
 [5] "C - 75 ဓာတ်ခွဲအတည်ပြုလူနာ\nအသက် - (၃၅) နှစ်၊ မ\nနေရပ်လိပ်စာ - မြောက်ဥက္ကလာပမြို့နယ်၊ ရန်…"
 [6] "C - 74 ဓာတ်ခွဲအတည်ပြုလူနာ\nအသက် - (၆၃) နှစ်၊ မ\nနေရပ်လိပ်စာ - ကလေးမြို့နယ်၊ စစ်ကိုင်းတိုင်း…" 
 [7] "C - 73 ဓာတ်ခွဲအတည်ပြုလူနာ\nအသက် - (၂၉) နှစ်၊ မ\nနေရပ်လိပ်စာ - အင်းစိန်မြို့နယ်၊ ရန်ကုန်တိုင်း…" 
 [8] "C - 72 ဓာတ်ခွဲအတည်ပြုလူနာ\nအသက် - (၂၇) နှစ်၊ မ\nနေရပ်လိပ်စာ - အင်းစိန်မြို့နယ်၊ ရန်ကုန်တိုင်း…" 
 [9] "C - 71 ဓာတ်ခွဲအတည်ပြုလူနာ\nအသက် - (၃၂) နှစ်၊ မ\nနေရပ်လိပ်စာ - ဗဟန်းမြို့နယ်၊ ရန်ကုန်တိုင်းဒေ…"
[10] "C - 69, 70 ဓာတ်ခွဲအတည်ပြုလူနာများ\nC- 69 - အသက် - (၃၄) နှစ်၊ ကျား\nC- 70 - အသက်…"
[11] "C - 65, 66, 67, 68 ဓာတ်ခွဲအတည်ပြုလူနာများ\nC-65 - အသက် - (၅၇) နှစ်၊ မ\nC-66 - …"
[12] "C - 64 ဓာတ်ခွဲအတည်ပြုလူနာ\nအသက် - (၂၃) နှစ်၊ ကျား\nနေရပ်လိပ်စာ - မိုင်းဖြတ်မြို့နယ်၊ ရှမ်း…" 
[13] "C - 63 ဓာတ်ခွဲအတည်ပြုလူနာ\nအသက် - (၆၅) နှစ်၊ ကျား\nနေရပ်လိပ်စာ - လှိုင်သာယာမြို့နယ်၊ ရန်ကုန်…"
[14] "C - 62 ဓာတ်ခွဲအတည်ပြုလူနာ\nအသက် - (၃၀) နှစ်၊ မ\nနေရပ်လိပ်စာ - မရမ်းကုန်းမြို့နယ်၊ ရန်ကုန်တိုင်…"
[15] "C - 61 ဓာတ်ခွဲအတည်ပြုလူနာ\nအသက်- (၃၈) နှစ်၊ ကျား\nနေရပ်လိပ်စာ - အင်းစိန်မြို့နယ်\nCOVID-…"
[16] "C - 60 ဓာတ်ခွဲအတည်ပြုလူနာ\nအသက်- (၃၉) နှစ်၊ ကျား\nနေရပ်လိပ်စာ - ရွှေပြည်သာမြို့နယ်\nCOVI…"
[17] "C - 59 ဓာတ်ခွဲအတည်ပြုလူနာ\nအသက်- (၂၃) နှစ်၊ မ\nနေရပ်လိပ်စာ - အင်းစိန်မြို့နယ်\nCOVID-19 …"
[18] "C - 58 ဓာတ်ခွဲအတည်ပြုလူနာ\nအသက်- (၄၆) နှစ်၊ မ\nနေရပ်လိပ်စာ - အင်းစိန်မြို့နယ်\nတက်ရောက်ကုသသ…"
[19] "C - 57 ဓာတ်ခွဲအတည်ပြုလူနာ\nအသက်- (၃၉) နှစ်၊ မ\nနေရပ်လိပ်စာ - အင်းစိန်မြို့နယ်\nCOVID-19 …"
[20] "C - 56 ဓာတ်ခွဲအတည်ပြုလူနာ\nအသက်- (၃၃) နှစ်၊ မ\nနေရပ်လိပ်စာ - အင်းစိန်မြို့နယ်၊ ရန်ကုန်တိုင်းဒေ…"
[21] "C - 55 ဓာတ်ခွဲအတည်ပြုလူနာ\nအသက်- (၄၀) နှစ်၊ ကျား\nနေရပ်လိပ်စာ - အင်းစိန်မြို့နယ်၊ ရန်ကုန်တိုင်…"
[22] "C - 54 ဓာတ်ခွဲအတည်ပြုလူနာ\nအသက်- (၇) နှစ်၊ မ\nနေရပ်လိပ်စာ - အင်းစိန်\nCOVID-19 ရောဂါ…"
[23] "C - 53 ဓာတ်ခွဲအတည်ပြုလူနာ\nအသက် - (၃၁) နှစ်၊ ကျား\nနေရပ်လိပ်စာ မြို့သစ်မြို့နယ်၊ မကွေးတိုင်း…" 
[24] "C - 52 ဓာတ်ခွဲအတည်ပြုလူနာ\nအသက်- (၄၀) နှစ်၊ မ\nနေရပ်လိပ်စာ - တောင်ဥက္ကလာပမြို့နယ်\nCOVI…"
[25] "C - 51 ဓာတ်ခွဲအတည်ပြုလူနာ\nအသက်- (၄၉) နှစ်၊ ကျား\nနေရပ်လိပ်စာ - တောင်ဥက္ကလာပမြို့နယ်\nC…"
[26] "C - 50 ဓာတ်ခွဲအတည်ပြုလူနာ\nအသက်- (၄၁) နှစ်၊ ကျား\nနေရပ်လိပ်စာ - တောင်ဥက္ကလာပမြို့နယ်\nC…"
[27] "C - 49 ဓာတ်ခွဲအတည်ပြုလူနာ\nအသက်- (၃၅) နှစ်၊ ကျား\nနေရပ်လိပ်စာ - တောင်ဥက္ကလာပမြို့နယ်\nC…"
[28] "C - 48 ဓာတ်ခွဲအတည်ပြုလူနာ\nအသက်- (၃၁) နှစ်၊ မ\nနေရပ်လိပ်စာ - တောင်ဥက္ကလာပမြို့နယ်\nCOVI…"
[29] "C - 47 ဓာတ်ခွဲအတည်ပြုလူနာ\nအသက်- (၅၀) နှစ်၊ မ\nနေရပ်လိပ်စာ - တောင်ဥက္ကလာပမြို့နယ်\nCOVI…"
[30] "C - 46 ဓာတ်ခွဲအတည်ပြုလူနာ\nအသက်- (၄၄) နှစ်၊ ကျား\nနေရပ်လိပ်စာ - ဗဟန်းမြို့နယ်\nCOVID-1…"
[31] "C - 45 ဓာတ်ခွဲအတည်ပြုလူနာ\nအသက်- (၅၄) နှစ်၊ ကျား\nနေရပ်လိပ်စာ - မရမ်းကုန်းမြို့နယ်\nတက်ရေ…"
[32] "C - 44 ဓာတ်ခွဲအတည်ပြုလူနာ\nအသက် - (၃၂) နှစ်၊ မ\nနေရပ်လိပ်စာ - မရမ်းကုန်းမြို့နယ်\nတက်ရောက်…"
[33] "C - 43 ဓာတ်ခွဲအတည်ပြုလူနာ\nအသက် - (၄၁) နှစ်၊ မ\nနေရပ်လိပ်စာ - မရမ်းကုန်းမြို့နယ်\nတက်ရောက်…"
[34] "C - 42 ဓာတ်ခွဲအတည်ပြုလူနာ\nအသက်- (၄၃) နှစ်၊ မ\nနေရပ်လိပ်စာ - ဗဟန်းမြို့နယ်\nCOVID-19 …" 
[35] "C - 41 ဓာတ်ခွဲအတည်ပြုလူနာ\nအသက် - (၃၈) နှစ်၊ ကျား\nနေရပ်လိပ်စာ - အင်းစိန်မြို့နယ်၊ ရန်ကုန်တို…"
[36] "C - 40 ဓာတ်ခွဲအတည်ပြုလူနာ\nအသက် - (၆၈) နှစ်၊ မ\nနေရပ်လိပ်စာ - ဗဟန်းမြို့နယ်၊ ရန်ကုန်တိုင်းဒေ…"
[37] "C - 39 ဓာတ်ခွဲအတည်ပြုလူနာ\nအသက် - (၈၅) နှစ်၊ ကျား\nနေရပ်လိပ်စာ ပန်းဘဲတန်းမြို့နယ်၊ ရန်ကုန်တို…"
[38] "C - 38 ဓာတ်ခွဲအတည်ပြုလူနာ\nအသက် - (၇၈) နှစ်၊ ကျား\nနေရပ်လိပ်စာ - အင်းစိန်မြို့နယ်၊ ရန်ကုန်တို…"
[39] "C - 37 ဓာတ်ခွဲအတည်ပြုလူနာ\nအသက် - (၄၄) နှစ်၊ ကျား\nနေရပ်လိပ်စာ - အင်းစိန်မြို့နယ်\nတက်ရော…"
[40] "C - 36 ဓာတ်ခွဲအတည်ပြုလူနာ\nအသက် - (၃၃) နှစ်၊ ကျား\nနေရပ်လိပ်စာ - အင်းစိန်မြို့နယ်\nတက်ရော…"
[41] "C - 35 ဓာတ်ခွဲအတည်ပြုလူနာ\nအသက် - (၂၄) နှစ်၊ ကျား\nနေရပ်လိပ်စာ - အင်းစိန်မြို့နယ်\nတက်ရော…"
[42] "C - 34 ဓာတ်ခွဲအတည်ပြုလူနာ\nအသက် - (၂၀) နှစ်\nနေရပ်လိပ်စာ - အင်းစိန်မြို့နယ်\nတက်ရောက်ကုသသည့်…" 
[43] "C - 33 ဓာတ်ခွဲအတည်ပြုလူနာ\nအသက် - (၂၉) နှစ်, မ\nနေရပ်လိပ်စာ - ရွှေပြည်သာမြို့နယ်၊ ရန်ကုန်တိုင်…"
[44] "C - 32 ဓာတ်ခွဲအတည်ပြုလူနာ\nအသက် - (၃၈) နှစ်၊ ကျား\nနေရပ်လိပ်စာ - လှည်းကူးမြို့နယ်၊ ရန်ကုန်တို…"
[45] "C - 31 ဓာတ်ခွဲအတည်ပြုလူနာ\nအသက် (၄၉) နှစ်၊ တီးတိန်မြို့နယ်၊ ချင်းပြည်နယ်\nဓာတ်ခွဲအတည်ပြုသည့်ရက်စွဲ…"
[46] "C - 30 ဓာတ်ခွဲအတည်ပြုလူနာ\nအသက် (၅၈) နှစ်၊ ပြည်မြို့နယ်၊ ပဲခူးတိုင်းဒေသကြီး\nဓာတ်ခွဲအတည်ပြုသည့်ရ…"
[47] "C - 29 ဓာတ်ခွဲအတည်ပြုလူနာ\nအသက် (26) နှစ်၊ တောင်ကြီးမြို့၊ ရှမ်းပြည်နယ် (တောင်ပိုင်း)\nဓာတ်ခွဲ…"
[48] "C - 28 ဓာတ်ခွဲအတည်ပြုလူနာ\nအသက် (၆၃) နှစ်၊ ဗဟန်းမြို့နယ်၊ ရန်ကုန်တိုင်းဒေသကြီး\nဓာတ်ခွဲအတည်ပြုသ…"
[49] "C - 27 ဓာတ်ခွဲအတည်ပြုလူနာ\nအသက် (၂၄) နှစ်၊ ကျိုက်မရောမြို့နယ်၊ မွန်ပြည်နယ်\nဓာတ်ခွဲအတည်ပြုလူနာ …"
[50] "C - 26 ဓာတ်ခွဲအတည်ပြုလူနာ\nအသက် (၅၆) နှစ်၊ လှိုင်သာယာမြို့နယ်၊ ရန်ကုန်တိုင်းဒေသကြီး\nဓာတ်ခွဲအတည်…" 
[51] "C - 25 ဓာတ်ခွဲအတည်ပြုလူနာ\nအသက် (၅၅) နှစ်၊ ဗဟန်းမြို့နယ်၊ ရန်ကုန်တိုင်းဒေသကြီး\nဓာတ်ခွဲအတည်ပြုလူ…"
[52] "C - 24 ဓာတ်ခွဲအတည်ပြုလူနာ\nအသက် (၃၂) နှစ်၊ မရမ်းကုန်းမြို့နယ်၊ ရန်ကုန်တိုင်းဒေသကြီး\nရန်ကုန်တိုင်း…"
[53] "C - 23 ဓာတ်ခွဲအတည်ပြုလူနာ\nအသက် (၅၈) နှစ်၊ တီးတိန်မြို့နယ်၊ ချင်းပြည်နယ်\nဓာတ်ခွဲအတည်ပြုလူနာ C…"
[54] "C-22 ဓာတ်ခွဲအတည်ပြုလူနာ\nအဆိုပါလူနာသည် ရန်ကုန်တိုင်းဒေသကြီး၊ တောင်ဥက္ကလာပမြို့နယ်တွင် နေထိုင်သော …"
[55] "C-21 ဓာတ်ခွဲအတည်ပြုလူနာ\nအမေရိကန်နိုင်ငံ၊ နယူးယောက်မြို့မှ (၂၄-၃-၂၀၂၀)ရက်နေ့တွင် KE-082 (ခုံမှ…"
[56] "C - 17, 18, 19, 20 ဓာတ်ခွဲအတည်ပြုလူနာများ\nဓာတ်ခွဲအတည်ပြုလူနာ (C-17, C-18, C-19,C…"
[57] "C - 16 ဓာတ်ခွဲအတည်ပြုလူနာ\nအသက် (၆၃) နှစ်အရွယ် အဆိုပါလူနာသည် (၁၅-၃-၂၀၂၀) ရက်နေ့၊ ဒူဘိုင်းမှ…"
[58] "C - 15 ဓာတ်ခွဲအတည်ပြုလူနာ\nနိုင်ငံခြားသားများကို ကျန်းမာရေးဝန်ဆောင်မှုပေးသော ဆေးခန်းတစ်ခု…"
[59] "C - 14 ဓာတ်ခွဲအတည်ပြုလူနာ\nအဆိုပါလူနာသည် ထိုင်းငံတွင်နေစဉ် အန်ခြင်း၊ ဗိုက်အောင့်ခြင်း၊ များခံစာ…"
[60] "C - 11, 12, 13 ဓာတ်ခွဲအတည်ပြုလူနာများ\nအဆိုပါ ဓာတ်ခွဲအတည်ပြုလူနာများသည် ပြင်သစ်နိုင်ငံမှ မြ…"
[61] "C-10 ဓာတ်ခွဲအတည်ပြုလူနာ\nအဆိုပါလူနာသည် ရန်ကုန်တိုင်းဒေသကြီး၊ မင်္ဂလာတောင်ညွန့် မြို့နယ်တွင်နေထိုင်သော…"
[62] "C-9 ဓာတ်ခွဲအတည်ပြုလူနာ\nအဆိုပါလူနာသည် ရန်ကုန်တိုင်းဒေသကြီး၊ ပုလဲမြို့သစ်၊ သင်္ဃန်းကျွန်းကြီးတွင် နေထို…"
[63] "C-8 ဓာတ်ခွဲအတည်ပြုလူနာ\nရန်ကုန်တိုင်းဒေသကြီး၊ ဗဟန်းမြို့နယ်နေ အသက် (၆၀) နှစ်အရွယ် ဧည့်လမ်းညွှန် အ…" 
[64] "C-7 ဓာတ်ခွဲအတည်ပြုလူနာ\nအသက်(၅၈)နှစ်အရွယ် ဆွစ်ဇာလန်နိုင်ငံသူ အမျိုးသမီးသည် (၁၇-၃-၂၀၂၀) ရက်နေ့တွ…"
[65] "C-6 ဓာတ်ခွဲအတည်ပြုလူနာ\n\nအသက် (၂၉) နှစ်အရွယ် ရန်ကုန်တိုင်းဒေသကြီး၊ အင်းစိန်မြို့နယ်မှ အမျိုးသား …"
[66] "C-5 ဓာတ်ခွဲအတည်ပြုလူနာ\n\nရန်ကုန်တိုင်းဒေသကြီး၊ မင်္ဂလာတောင်ညွန့်မြို့နယ်တွင် နေထိုင်သော အသက် (၆၉)…"
[67] "C-4 ဓာတ်ခွဲအတည်ပြုလူနာ\nချမ်းမြသာစည်မြို့နယ်၊ မန္တလေးတိုင်းဒေသကြီး (ကန်တော်နဒီဆေးရုံ) - မန္တ…"
[68] "C-3 ဓာတ်ခွဲအတည်ပြုလူနာ\n\nအဆိုပါ လူနာသည် (၂၀-၃-၂၀၂၀) ရက်နေ့တွင် အင်္ဂလန်နိုင်ငံ၊ လန်ဒန်မြို့မှ ဒို…"
[69] "C-2 ဓာတ်ခွဲအတည်ပြုလူနာ\nအဆိုပါလူနာသည် (၂၂-၃-၂၀၂၀) ရက်နေ့တွင် အင်္ဂလန်နိုင်ငံ၊ လန်ဒန်မြို့မှ Emir…"
[70] "C-1 ဓာတ်ခွဲအတည်ပြုလူနာ\n  အဆိုပါလူနာသည် ၎င်း၏မိခင်နှင့်အတူ အမေရိကန်နိုင်ငံ၊ ဝါရှင်တန်မြို့မှ (၁၃-၃-…"
Selenium works with the browser and the browser needs time to complete the work requested by Selenium. If it doesn’t get enough time to get information for a case and the processing goes on to next step there will be errors. When I first run the above block of looping code, it took about five or six seconds to complete. But the problem is that I got a lot of duplicate cases. So I’ve to give time by adding system-sleep (time in seconds). Now I see that all cases are covered! I am a bit dumb as to be not able to think how and where to distribute the system sleeps. So I had to go through a lot of trials and errors. And R is interactive, so it’s great for us dummies!
Last, I need an explanation for this post. My last post has holes and errors and I thought of deleting it and posting the current one in its place. But after second thought I think it would good for myself and others to learn from my mistakes. So I am giving both versions.

Tuesday, June 9, 2020

Extracting information from a dynamic webpage with RSelenium - II


From the experience of working with RSelenium for extracting information for the last two cases and case-1, the workflow for extracting information for all cases is:
(i) Create a text file of codes for identifying cases from the MOHS webpage.
(ii) Read-in the text file into R.
(iii) Create a vector of values for xpath locators using the imported case codes of (ii)
(iv) Create a list object into which the case information will be appeneded.
(v) Access the information for case-151 and 150 and append them first into the list.
(vi) Loop through all cases except case-151 and 150, and extract their information and populate the list of (iv), and it is done.

Create a text file of codes for cases

The page source of COVID-19 Contact Tracing and Reporting webpage is viewed with the Chrome browser and saved to disk. This file is opened with Notepad++ and column of codes was extracted and saved into a csv file with one column and column name = “ccode”.

Read caseCode csv file

xcc <- read.csv("caseCode.txt",encoding = "UTF-8")
There were 50 or more warnings (use warnings() to see the first 50)
str(xcc)
'data.frame':   142 obs. of  1 variable:
 $ ccode: chr  "10137" "10135" "10131" "10130" ...
head(xcc)
 
 
ccode
<chr>
110137
210135
310131
410130
510129
610128
tail(xcc)
 
 
ccode
<chr>
1378381
1384655
1396229
140817
1415037
142528

Create a vector of values for xpath locators

From my last post, the syntax for the location of case-1 was:
case_1 <- rD$findElement(using = 'xpath', "//*[@value = '528']")
So the vector of values for the xpath could be created as:
xps <- list("//*[@value = '", xcc$ccode, "']")
tmp0 <- do.call(paste0, xps)
tmp <- tmp0[-(1:2)]
head(tmp)
[1] "//*[@value = '10131']" "//*[@value = '10130']" "//*[@value = '10129']"
[4] "//*[@value = '10128']" "//*[@value = '10122']" "//*[@value = '10120']"
tail(tmp)
[1] "//*[@value = '8381']" "//*[@value = '4655']" "//*[@value = '6229']"
[4] "//*[@value = '817']"  "//*[@value = '5037']" "//*[@value = '528']" 

Retrieve information on case-151 and 150 and populate the list

RSelenium is started and Chrome browser will be used.
# Load the Library
library(RSelenium)
# start the server and browser(you can use other browsers here)
rD <- remoteDriver(remoteServerAddr = "localhost",
                      port = 4445L,
                      browserName = "chrome")
rD$open()
[1] "Connecting to remote server"
$acceptInsecureCerts
[1] FALSE

$browserName
[1] "chrome"

$browserVersion
[1] "81.0.4044.138"

$chrome
$chrome$chromedriverVersion
[1] "81.0.4044.138 (8c6c7ba89cc9453625af54f11fd83179e23450fa-refs/branch-heads/4044@{#999})"

$chrome$userDataDir
[1] "/tmp/.com.google.Chrome.C6kmZb"


$`goog:chromeOptions`
$`goog:chromeOptions`$debuggerAddress
[1] "localhost:41905"


$networkConnectionEnabled
[1] FALSE

$pageLoadStrategy
[1] "normal"

$platformName
[1] "linux"

$proxy
named list()

$setWindowRect
[1] TRUE

$strictFileInteractability
[1] FALSE

$timeouts
$timeouts$implicit
[1] 0

$timeouts$pageLoad
[1] 300000

$timeouts$script
[1] 30000


$unhandledPromptBehavior
[1] "dismiss and notify"

$`webauthn:virtualAuthenticators`
[1] TRUE

$webdriver.remote.sessionid
[1] "cf7eeac18a2643abc1143b414cc7e2ee"

$id
[1] "cf7eeac18a2643abc1143b414cc7e2ee"
# navigate to URL for MOHS contact tracing and reporting
rD$navigate("https://mohs.gov.mm/page/8509")
An empty list for storing the information on cases is created and populated first with the last two cases.
cseTexts <- c()

cse151 <- rD$findElement(using="css selector", ".nav-tabs > li:nth-child(1) > a:nth-child(1)")
cse151$clickElement()
t151 <- rD$findElement(using="css selector", "#Post_10137")
cseTexts <- append(cseTexts,t151$getElementText())
#cat(cseTexts[[1]])

cse150 <- rD$findElement(using="css selector", ".nav-tabs > li:nth-child(2) > a:nth-child(1)")
cse150$clickElement()
t150 <- rD$findElement(using="css selector", "#Post_10135")
cseTexts <- append(cseTexts,t150$getElementText())
#cat(cseTexts[[2]])

Retrieving information for all cases except case-151 and 150

To try retrieving information for other cases, I have to locate the “View More” tab, and click on it to open the select case dropdown list.
# find element view more
csey <- rD$findElement(using="css selector", "#recentcase li:nth-child(3) a")
# click view more and "select the case box" is opened
csey$clickElement()
# after clicking  view more  find "#select2-slcase-container"
cseM <- rD$findElement(using="css selector","#select2-slcase-container") 
cseM$clickElement()      # need to click caseM to open
Looping through all the cases to extract information:
Sys.sleep(2)
cseEle <- list()
N <- length(tmp)
system.time({
for (i in 1:N) {
    cseEle[[i]] <- rD$findElements(using = 'xpath', tmp[i])
    Sys.sleep(1)
}
})
   user  system elapsed 
   1.53    0.03  144.29 
cseEle.1 <- unlist(cseEle)
Sys.sleep(2)
system.time({
for(cse in cseEle.1){
  cse
  Sys.sleep(0.5)
  cse$clickElement()
  t <- rD$findElement(using = 'css selector', "#OtherCase_Info")
  Sys.sleep(0.5)
  t$clickElement()
  cseTexts <- append(cseTexts,t$getElementText()[[1]])
  Sys.sleep(1)
}
})
   user  system elapsed 
   3.58    0.04  295.89 
Selenium worked with the browser and the browser needs time to complete the work requested by Selenium. If it doesn’t get enough time get information for a case and the processin goes on to next step there will be errors. When I first run the above block of looping code, it took about five or six seconds to complete. But the problem is that I got a lot of duplicate cases. So I’ve to give time by adding system-sleep (time in seconds). Even with a total running time of 440 seconds for the loops, I got two of case-90, and missed case-7, and case-89!
knitr::include_graphics("cseTexts.png")
I checked to see that case-7 and case-89 exist:
case_89 <- rD$findElements(using = 'xpath', tmp[61])
case_89[[1]]$clickElement()
case89_text <- rD$findElement(using = 'css selector', "#OtherCase_Info")
cat(paste0(case89_text$getElementText()))
C - 89 ဓာတ်ခွဲအတည်ပြုလူနာ
အသက် - (၅၀) နှစ်၊ ကျား (C-47 ၏ ခင်ပွန်း)
နေရပ်လိပ်စာ - တောင်ဉက္ကလာပမြို့နယ်၊ ရန်ကုန်တိုင်းဒေသကြီး
ရောဂါလက္ခဏာဖြစ်ပွားခြင်း - မရှိ
ဓာတ်ခွဲအတည်ပြုလူနာနှင့်ထိတွေ့ခြင်း - C-47, C-90, C-91
အသွားအလာကန့်သတ်သည့်ရက်စွဲ - ၁၄-၄-၂၀၂၀
ဓာတ်ခွဲအတည်ပြုသည့်ရက်စွဲ - ၁၈-၄-၂၀၂၀
ပြည်ပခရီးသွားရာဇဝင် - မရှိ    
အတူနေမိသားစုဝင် - (၁၁) ဦး
ဓာတ်ခွဲအတည်ပြုစစ်ဆေးတွေ့ရှိပြီးချိန်မှစ၍ အဆိုပါလူနာအား ဝေဘာဂီအထူးကုဆေးရုံကြီးတွင် သီးခြားထားရှိကုသမှုပေးလျက်ရှိပါသည်။
(၇-၄-၂၀၂၀) ရက်နေ့မှ (၉-၄-၂၀၂၀) ရက်နေ့ထိ လူနာအမှတ်(၈၉)သည် ၎င်း၏ရုံးခန်းတွင် အစည်းအဝေးပြုလုပ်ခဲ့ကြောင်းသိရှိရပါသည်။
လူနာအမှတ် C-47 အားပိုးတွေ့လူနာအဖြစ် အတည်ပြုသတ်မှတ်ပြီးချိန်မှစ၍ သတ်မှတ်နေရာတွင် အသွားအလာကန့်သတ်၍ စောင့်ကြပ်ကြည်ရှုလျက်ရှိရာ ပြင်ပသို့ သွားလာခဲ့ခြင်းမရှိပါ။
Case 089 ၏ အတူနေမိသားစုဝင်များအား အသွားအလာပိတ်ပင်တားမြစ်၍ သီးခြားစောင့်ကြပ်ကြည့်ရှုမှုပြုလုပ်ခဲ့ပြီး မိသားစုဝင်(၂)ဦး (C-90, C-91) တွင်လည်း ရောဂါပိုး တွေ့ရှိခဲ့ပါသည်။
အခြားအနီးကပ်ထိတွေ့ခဲ့သူများအားလည်း အသွားအလာပိတ်ပင်တားမြစ်၍ သီးခြားစောင့်ကြပ်ကြည့်ရှုလျက်ရှိပါသည်။
case_7 <- rD$findElements(using = 'xpath', tmp[61])
case_7[[1]]$clickElement()
case7_text <- rD$findElement(using = 'css selector', "#OtherCase_Info")
cat(paste0(case7_text$getElementText()))
C - 89 ဓာတ်ခွဲအတည်ပြုလူနာ
အသက် - (၅၀) နှစ်၊ ကျား (C-47 ၏ ခင်ပွန်း)
နေရပ်လိပ်စာ - တောင်ဉက္ကလာပမြို့နယ်၊ ရန်ကုန်တိုင်းဒေသကြီး
ရောဂါလက္ခဏာဖြစ်ပွားခြင်း - မရှိ
ဓာတ်ခွဲအတည်ပြုလူနာနှင့်ထိတွေ့ခြင်း - C-47, C-90, C-91
အသွားအလာကန့်သတ်သည့်ရက်စွဲ - ၁၄-၄-၂၀၂၀
ဓာတ်ခွဲအတည်ပြုသည့်ရက်စွဲ - ၁၈-၄-၂၀၂၀
ပြည်ပခရီးသွားရာဇဝင် - မရှိ    
အတူနေမိသားစုဝင် - (၁၁) ဦး
ဓာတ်ခွဲအတည်ပြုစစ်ဆေးတွေ့ရှိပြီးချိန်မှစ၍ အဆိုပါလူနာအား ဝေဘာဂီအထူးကုဆေးရုံကြီးတွင် သီးခြားထားရှိကုသမှုပေးလျက်ရှိပါသည်။
(၇-၄-၂၀၂၀) ရက်နေ့မှ (၉-၄-၂၀၂၀) ရက်နေ့ထိ လူနာအမှတ်(၈၉)သည် ၎င်း၏ရုံးခန်းတွင် အစည်းအဝေးပြုလုပ်ခဲ့ကြောင်းသိရှိရပါသည်။
လူနာအမှတ် C-47 အားပိုးတွေ့လူနာအဖြစ် အတည်ပြုသတ်မှတ်ပြီးချိန်မှစ၍ သတ်မှတ်နေရာတွင် အသွားအလာကန့်သတ်၍ စောင့်ကြပ်ကြည်ရှုလျက်ရှိရာ ပြင်ပသို့ သွားလာခဲ့ခြင်းမရှိပါ။
Case 089 ၏ အတူနေမိသားစုဝင်များအား အသွားအလာပိတ်ပင်တားမြစ်၍ သီးခြားစောင့်ကြပ်ကြည့်ရှုမှုပြုလုပ်ခဲ့ပြီး မိသားစုဝင်(၂)ဦး (C-90, C-91) တွင်လည်း ရောဂါပိုး တွေ့ရှိခဲ့ပါသည်။
အခြားအနီးကပ်ထိတွေ့ခဲ့သူများအားလည်း အသွားအလာပိတ်ပင်တားမြစ်၍ သီးခြားစောင့်ကြပ်ကြည့်ရှုလျက်ရှိပါသည်။