RSelenium中的XPath用于索引值列表

时间:2016-09-27 07:42:22

标签: xpath rselenium

以下是html的示例:

<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的值。是什么让这个列表成为第一个类中的类,其中class&#39;名称更改i1,i2。 所以我有一个计数器,当我去拿值时我会改变它。

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

所以即使尝试使用此

访问myVal索引的常规库
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有什么问题吗?

1 个答案:

答案 0 :(得分: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')]