Selenium WebDriver FindElements(By.XPath()) 不返回任何数据

问题描述 投票:0回答:1

我正在尝试引用下面 HTML 中的链接元素。

我尝试引用的元素是其中包含“WANT_TO_FIND_THIS_LINK”的元素。

使用它可以找到主 div 就好了:

var productHolder = driver.FindElements(By.XPath("//div[@data-partnumber='123456']"));

但是当我尝试访问该链接时,它什么也没返回。 我尝试了多种不同的方法,但它们都没有返回任何结果:

var productHolder = driver.FindElements(By.XPath("//div[@data-partnumber='123456']//div[@class='fc-image image-fit']//a"));
var productHolder = driver.FindElements(By.XPath("//div[@data-partnumber='123456']//div[contains(@class, 'fc-image')]"));
var productHolder = driver.FindElements(By.XPath("//div[@data-partnumber='123456']//div[@class='fc-image image-fit']//a"));

但是当我回到顶部时:

var productHolder = driver.FindElements(By.XPath("//div[@data-partnumber='123456']"));
效果很好。

在这里尝试一切:http://xpather.com/它找到了我需要的东西。我做错了什么,任何帮助都会很棒!

HTML 代码片段:

<div class="col-sm-3 col-xs-6 fg-products-product" data-partnumber="123456" data-kjs-app="products/product" data-kjs-entityid="71">
  <input type="hidden" data-kjs-setting="initialize" value="1" data-kjs-datatype="bool">
  <input type="hidden" data-kjs-setting="hideDescription" value="1" data-kjs-datatype="bool">
  <input type="hidden" data-kjs-setting="partnumber" value="123456">
  <input type="hidden" data-kjs-setting="bridgeKey" value="search/result/main-13-getProduct|type:products|aggregationName:pro">
  <div data-kjs-view="main">
    <div class="fc-wrapper">
      <div data-kjs-view="wishlist">
        <div data-kjs-app="wishlist/control" class="fg-wishlist-control" data-kjs-entityid="183">
          <input type="hidden" data-kjs-setting="partnumber" value="123456">
          <input type="hidden" data-kjs-setting="onWishlist" value="0" data-kjs-datatype="bool">
          <div data-kjs-view="controls">    
            <a href="javascript:void(0);" class="fc-add" data-kjs-click="add" title="Add to wishlist"></a>
          </div>
        </div>    
      </div>
      <div class="fc-image image-fit">
        <a data-kjs-click="linkClicked" href="/uk/professional/maincat/subcat/producta.html">WANT_TO_FIND_THIS_LINK
          <img src="/mam/123456/mainproduct/160440/d4.jpg" alt="main image"></a>
      </div>
      <div data-kjs-view="addedValue">
      </div>
      <div class="fc-details">
        <h6 class="fc-label" style="min-height: 78px;">
          <a data-kjs-click="linkClicked" id="producttitle-71-10516762" href="/uk/professional/maincat/subcat/producta.html">
            Fun Toy
          </a>
        </h6>
        <div class="fc-price" data-kjs-view="price" style="min-height: 20px;">
          <div class="fg-products-price" data-kjs-app="products/price" data-kjs-entityid="184">
            <input type="hidden" data-kjs-setting="price.price" value="">
            <input type="hidden" data-kjs-setting="price.priceFormatted" value="">
            <input type="hidden" data-kjs-setting="price.oldPrice" value="0">
            <input type="hidden" data-kjs-setting="price.oldPriceFormatted" value="">
            <input type="hidden" data-kjs-setting="price.recommendedRetailPrice" value="">
            <input type="hidden" data-kjs-setting="price.recommendedRetailPriceFormatted" value="">
            <input type="hidden" data-kjs-setting="price.priceSaving" value="">
            <div data-kjs-view="price" style="min-height: 20px;">
            </div>
          </div>        
        </div>
        <div class="fc-ratings">
          <a data-kjs-click="linkClicked" href="/uk/professional/maincat/subcat/producta.html#ratings">
            <span class="ff-cursor-overlay"></span>
          </a>
        </div>
        <div class="fc-description">
        </div>
        <div class="fc-compare" data-kjs-app="products/comparison/control" data-kjs-entityid="185">
          <input type="hidden" data-kjs-setting="productId" data-kjs-value="10516762">
          <div class="fg-checkbox-custom" data-kjs-app="content/checkbox" data-kjs-entityid="186">
            <input id="compare_10516762" type="checkbox" class="fc-checkbox-custom" data-kjs-change="products/comparison/control|toggleComparison">
            <label for="compare_10516762">
              Compare
            </label>
          </div>
        </div>
      </div>
      <div data-kjs-view="button">
      </div>
      <div data-kjs-view="lowestPriceInfo">
      </div>
    </div>
  </div>
</div>

c# selenium-webdriver xpath selenium-chromedriver
1个回答
0
投票

给定提供的 HTML,此 CSS 选择器将找到 A 标签。

div[data-partnumber='123456'] div.fc-image a

如果您必须有一个 XPath,则相当于上面的内容是

//div[@data-partnumber='123456']//div[contains(@class,'fc-image')]/a

注意:如果这些仍然没有返回任何内容,您需要确保添加

WebDriverWait
并等待可点击。

© www.soinside.com 2019 - 2024. All rights reserved.