如何根据Chrome开发工具中的元素编写XPath?

时间:2018-05-17 21:20:08

标签: selenium selenium-webdriver

我正在尝试在下图中获取带下划线值的XPath。我有一个总是不同的卡片列表,我需要从突出显示的卡片内部获取值,该卡片在其类中有“突出显示”。

当我通过检查Chrome中的元素来获取XPath时,我得到类似于//*[@id="rental-asset"]/div/div[1]/div/rdo-nav-card-asset[11]/div/div[1]/div/i的内容,这对我不起作用,因为括号中的11总是将是不同的值。如何根据这些元素的唯一类为这些元素创建XPath?

Chrome Dev Tools

3 个答案:

答案 0 :(得分:1)

以下是如何获得第一个带下划线的内容。我想你应该可以从这里拿走它。

import ( "net/http" )

func main() {
   mux := http.NewServeMux()
   handlers.TableHandler(*mux)
}

答案 1 :(得分:0)

您可以拆分xpath并在预期发生的范围内进行迭代。

假设他们有1-22的价值,你可以这样。 这是一个python代码。

str1 = '//*[@id="rental-asset"]/div/div[1]/div/rdo-nav-card-asset['
str2 = ']/div/div[1]/div/i'
for i in range(1, 22):
    str3 = str1 + str(i) + str2
    a = driver.find_element_by_xpath(str3).text
    print a

您可以获取循环内的其他元素或数据。

如果您有任何疑惑,请在下方评论。

答案 2 :(得分:0)

您可以先找到高亮卡,然后将其用作下划线文本的搜索上下文。

代码如下:

var activeCard = driver.findElement(By.css('rdo-nav-card-asset > div.rdo-card-highlight'));

// the text of 1rd underline
var title = activeCard.findElement(By.css('.panel-title')).getText();

// the text of 2rd underline
var title = activeCard.findElement(By.xpath('.//div[@class='rdo-card-metric'][1]'))
           .getText();

// the text of 3rd underline
var title = activeCard.findElement(By.css('.text-danger')).getText();

// the text of 4rd underline
var title = activeCard.findElement(By.xpath('.//div[@class='rdo-card-metric'][3]'))
           .getText();