簡體   English   中英

硒驅動器-從下拉列表中選擇所需的鋰項目

[英]Selenium driver - select the desired li item from a drop down list

我是新手並嘗試學習硒,因為我知道xpath,所以可以從列表中選擇特定元素:

driver.findElement(By.xpath("*[@id='category-dropdown']/descendant::*[@title='Events']"))

誰能告訴我如何從列表中選擇任何項目,因為每個項目都有不同的標題名稱? 我只想通過將標題名稱作為變量傳遞來選擇一個項目,例如選擇“作業”或“汽車和自行車”

我嘗試了以下代碼,但我將列表元素的大小設置為0

List<WebElement> element=driver.findElements(By.xpath(.//*[@id='category-dropdown']/ul/li));
System.out.println(element.size());
for (WebElement webElement : element)
{       
    System.out.println(webElement.getText());
}

元素大小為零

<div id="category-dropdown" class="drop-layers cate-layer" style="display: block;" data-type="overlay" data-action="focus" data-area="query">
    <ul>
        <li>
            <a href="javascript:void(0);" data-sc_cid="1" data-sc_gid="0" data-sc_cn="all" data-sc_dn="All Categories" title="All Categories">   All Categories </a>
        </li>
        <li>
            <a href="javascript:void(0);" data-sc_cid="1397" data-sc_gid="60" data-sc_cn="cars-bikes" data-sc_dn="Cars & Bikes" title="Cars & Bikes">   Cars & Bikes </a>
        </li>
        <li>
            <a href="javascript:void(0);" data-sc_cid="18224025" data-sc_gid="269" data-sc_cn="mobiles-tablets" data-sc_dn="Mobiles & Tablets" title="Mobiles & Tablets">   Mobiles & Tablets </a>
        </li>
        <li>
           <a href="javascript:void(0);" data-sc_cid="18222212654" data-sc_gid="247" data-sc_cn="electronics-appliances" data-sc_dn="Electronics & Appliances" title="Electronics & Appliances">   Electronics & Appliances </a>
        </li>
        <li>
            <a href="javascript:void(0);" data-sc_cid="1405" data-sc_gid="20" data-sc_cn="real-estate" data-sc_dn="Real Estate" title="Real Estate">   Real Estate </a>
        </li>
        <li>
            <a href="javascript:void(0);" data-sc_cid="1325" data-sc_gid="123" data-sc_cn="services" data-sc_dn="Services" title="Services">   Services </a>

查看您的定位器以獲取列表

List<WebElement> element=driver.findElements(By.xpath(.//*[@id='category-dropdown']/ul/li));

您尚未將xpath括在引號中,因此它不會將其識別為有效,應該是

List<WebElement> element=driver.findElements(By.xpath("//*[@id='category-dropdown']/ul/li"));

無論何時找到元素""都是必需的。

例如:

driver.findElements(By.id("xyz"));
driver.findElements(By.className("xyz"));
driver.findElements(By.xpath("//*[@id='xyz']"));

只需更改此語句

List<WebElement> element=driver.findElements(By.xpath("//*[@id='category-dropdown']/ul/li"));

休息很好

您可以為此使用XPath。 當您不必首先單擊下拉列表時;

WebElement el = driver.findElement(By.xpath("//div[@id = 'category-dropdown']/descendant::li[text() = 'Cars @ Bikes']"));
el.click();

當您必須首先單擊下拉列表時:

WebElement dropdown = driver.findElement(By.id("category-dropdown"));
dropdown.click();
dropdown.findElement(By.cssSelector("li[value='Cars & Bikes']")).click();

暫無
暫無

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

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