首页 文章

从特定元素中识别XPath

提问于
浏览
0

我正在一个页面上,页面动态加载页面,滚动时添加数据 . 为了识别项目的属性,我确定了父div,在哪里识别地址,我必须找到从父元素到span元素的XPath . 下面是我的DOM结构:

<div class = "parentdiv">
    <div class = "search">
    <div class="header">
    <div class="data"></div>
    <div class="address-data">
      <div class="address" itemprop="address">
        <a itemprop="url" href="/search/Los-Angeles-CA-90025">
                <span itemprop="streetAddress">
                    Avenue
                </span>

                <br>
                <span itemprop="Locality">Los Angeles</span>
                <span itemprop="Region">CA</span>
            </a>
        </div>
        </div>
        </div>
    </div>
</div>
</div>

在这里,我想找到三个 Span ,我目前在父div中 . 有人可以指导如何使用特定div的XPath定位元素吗?

3 回答

  • 0

    您可以尝试以下XPath,

    要找到街道地址:

    //div[@class="parentdiv"]/div/div/a/span[@itemprop="streetAddress"]
    

    要找到地区/城市:

    //div[@class="parentdiv"]/div/div/a/span[@itemprop="Locality"]
    

    找到状态:

    //div[@class="parentdiv"]/div/div/a/span[@itemprop="Region"]
    
  • 0

    要打印 <span> 标记 WebElements 的列表,其中包含 Avenue 文本,如 div class = "parentdiv" 节点,您可以使用以下代码块:

    IList<IWebElement> myList = Driver.FindElements(By.CssSelector("div.parentdiv > div.address > a[itemprop=url] > span"));
    foreach (IWebElement element in myList) 
    {
        string my_add = element.GetAttribute("innerHTML");
        Console.WriteLine(my_add);
    }
    
  • 1

    您的DOM可能会变得相当大,因为它在滚动时添加元素,因此使用CSS选择器可能会更快 .

    要获取div中的所有 span 标记,请使用:

    div[class='address'] span
    

    要使用 itemprop 属性获取特定的 span ,请使用:

    div[class='address'] span[itemprop='streetAddress']
    div[class='address'] span[itemprop='Locality']
    div[class='address'] span[itemprop='Region']
    

    您可以将元素存储在变量中,如下所示:

    var streetAddress = driver.FindElement(By.CssSelector("div[class='address'] span[itemprop='streetAddress']"));
    var locality = driver.FindElement(By.CssSelector("div[class='address'] span[itemprop='Locality']"));
    var region = driver.FindElement(By.CssSelector("div[class='address'] span[itemprop='Region']"));
    

相关问题