2016-09-27 36 views
0

的索引列表下面是HTML的例子:的XPath RSelenium的值

<li class="index i1" 
<ol id="rem"> 
    <div class="bare"> 
    <h3> 
     <a class="tlt mhead" href="https://www.myexample.com"> 

<li class="index i2" 
<ol id="rem"> 
    <div class="bare"> 
    <h3> 
     <a class="tlt mhead" href="https://www.myexample2.com"> 

我想利用每一個HREF的值在元素中。是什麼讓名單變成第一個李的班級,其中班級的名字改變了i1,i2。 所以我有一個櫃檯,當我去拿價值的時候改變它。

i <- 1 
stablestr <- "index " 
myVal <- paste(stablestr , i, sep="") 

因此即使嘗試只用這個

profile<-remDr$findElement(using = 'xpath', "//*/input[@li = myVal]") 
profile$highlightElement() 

或HREF使用該

profile<-remDr$findElement(using = 'xpath', "/li[@class=myVal]/ol[@id='rem']/div[@id='bare']/h3/a[@class='tlt']") 

profile$highlightElement() 

這有什麼錯用的XPath指數設爲myVal訪問一般的lib?

回答

0

您的HTML結構無效。您的<li>標籤沒有正確關閉,看起來您很困惑<ol><li>。但是爲了這個問題,我假定結構就像你寫的那樣,有正確關閉的<li>標籤。

然後,構建myVal是不正確的。它會產生"index 1"而你想要"index i1"。使用"index i"代替stablestr

現在的XPath的:

//*/input[@li = myVal] 

這顯然是錯誤的,因爲在你的XML沒有input。另外,您沒有在$前添加變量。最後,*似乎沒有必要。試試這個:

//li[@class = $myVal] 

在你的第二個XPath,也有一些錯誤:

/li[@class=myVal]/ol[@id='rem']/div[@id='bare']/h3/a[@class='tlt'] 
     ^      ^     ^
    missing $    should be @class is actually 'tlt mhead' 

前兩個問題都容易解決。第三個不是。你可以使用contains(@class, 'tlt'),但是如果這個類是tltt,那也可以匹配,這可能不是你想要的。無論如何,這可能足以滿足您的使用情況。固定的XPath:

/li[@class=$myVal]/ol[@id='rem']/div[@class='bare']/h3/a[contains(@class, 'tlt')] 
+0

謝謝。在Rselenium中,xpath的語法可能有點不同? – Elen

+0

也許吧。我對RSelenium一無所知,我只是假設我們正在談論XPath,它符合規範。 – flyx