簡體   English   中英

硒通過XPath獲取元素

[英]Selenium get element by XPath

我有以下代碼,我想在其中選擇下拉菜單的值:

   <div class="prod-value col-xs-6 col-sm-8">
    <select class="selectpicker show-menu-arrow" data-style="btn-default btn-sm" data-width="98%" data-size="6" onchange="location=options[selectedIndex].value;" style="display: none;"><option value="/design-your-engagement-ring/choose-a-setting/10k-rose-gold-round-halo-engagement-ring/50277-E-10KR">10K Rose Gold</option>
        <option value="aa">10K White Gold</option>
        <option value="bb">10K Yellow Gold</option>
    </select>
    <div class="btn-group bootstrap-select show-menu-arrow" style="width: 98%;">
        <button type="button" class="btn dropdown-toggle selectpicker btn-default btn-sm" data-toggle="dropdown" title="14K White Gold">
        <span class="filter-option pull-left">14K White Gold</span>&nbsp;<span class="caret"></span></button>
        <div class="dropdown-menu open">
            <ul class="dropdown-menu inner selectpicker" role="menu">
                <li data-original-index="0">
                    <a tabindex="0" class="" data-normalized-text="10K Rose Gold"><span class="text">10K Rose Gold</span><span class="glyphicon glyphicon-ok icon-ok check-mark"></span></a>
                </li>
                <li data-original-index="1">
                    <a tabindex="0" class="" data-normalized-text="10K White Gold"><span class="text">10K White Gold</span><span class="glyphicon glyphicon-ok icon-ok check-mark"></span></a>
                </li>
            </ul>
        </div>
    </div>
    <input type="hidden" id="metal_type" name="metal_type" value="14KW">
</div>

如何使用C#處理硒。 我嘗試使用xpath,但會引發錯誤。

driver.FindElement(By.XPath("//*[@class='prod-value']/div/div/ul/li[0]/a")).Click();

上面的代碼無法找到確切的路徑。

嘗試這個:

// * [包含(@ class,'prod-value')] / div / div / ul / li [1] / a

該xpath存在兩個問題。

  • prod-value不是first div中存在的唯一類
  • 元素索引基於1,因此沒有li [0]

@derloopkat 提供了正確的解釋 (+1)

解決此問題的另一種簡單方法是使用鏈接文本(以防不再有"10K Rose Gold"鏈接):

driver.FindElement(By.LinkText("10K Rose Gold")).Click();

您需要單擊下拉菜單以展開其選項,然后才能選擇任何選項。

// expand dropdown options
driver
  .FindElement(By.Css("div.prod-value button.dropdown-toggle.selectpicker"))
  .click();

// choose option
driver.FindElement(By.LinkText("10K Rose Gold")).Click();

首先,您需要擴展下拉列表,如Yong回答

然后,您需要使用xpath單擊derloopkat回答的元素

這是獲取最終輸出的最終代碼:

  driver.FindElement(By.CssSelector("div.prod-value button.dropdown-toggle.selectpicker")).Click();
  driver.FindElement(By.XPath("//*[contains(@class,'prod-value')]/div/div/ul/li[1]/a")).Click();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM