1

我有一个 id="product-size" 的下拉列表和 S、M、L、XL 项目。

<select id="product-size" onchange=" addToWishList();">
 <option>Select</option>
 <option id="2119362" value="4">S</option>
 <option id="2119363" value="7">M</option>
 <option id="2119364" value="8">L</option>
 <option id="2119365" value="4">XL</option>
</select>

我使用了一个数组来存储这些项目,并且在运行时我需要访问第一个元素“S”。我面临的问题是,我无法在运行时单击第一个元素 S。我编写的代码如下:

driver.get("https://m.staging.karmaloop.com/product/The-Infinity-Tee/407819");
WebElement j =driver.findElement(By.id("product-size"));
String text = j.getText(); 
String[] DDLcount =text.split("\n");
for (int i=1;i<=DDLcount.length-1;i++)
    {       
    driver.findElement(By.xpath(Testconfiguration.size_dropdown_10deep)).click();
    Thread.sleep(5000);
    driver.findElement(By.name(DDLcount[i])).click(); 
    }

谁能帮我解决这个问题?

4

3 回答 3

3

从您提供的代码中,您为选项使用了无效的选择器。

他们似乎没有name属性

除了修改循环之外,如果不重建 DOM,您还可以使操作更快。

WebElement selectBox = driver.findElement(By.xpath(Testconfiguration.size_dropdown_10deep));
List<WebElement> options = selectBox.findElements(By.tagName("option"));
for ( WebElement option : options )
{      
    selectBox.click();
    option.click();
}
于 2013-07-29T07:41:31.857 回答
0
By locator = By.id("product-size");
Select select = new Select(webdriver.findElement(locator));

您可以使用以下三个选项中的任何一个从下拉列表中选择一个项目

select.selectByIndex(index); // Give Index as parameter
select.selectByValue(value); // Give the value of the option tag 
select.selectByVisibleText(value); // Give the visible text as parameter
于 2013-07-29T08:32:05.063 回答
0
 WebElement element =driver.findElement(By.id("product-size"));
Select sel = new Select(element);
List<WebElement> items = sel.getOptions();
boolean stringExits = false;
for(int i =0; i<items.size(); i++)
{
    String text = items.get(i).getText();
    if(text.equals("S"))
    {
         stringExists = true;
         break;
    }
}

if(stringExits)
{
     System.out.println("The string exists");
}else
{
     System.out.println("The string does not exist");
}
于 2013-07-29T09:13:49.223 回答