[英]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> <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中存在的唯一類 @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.