无法自动下拉,因为选择一个值时会自动选择,因此第二个值不可见

not able to automate drop down as while selecting one value gets auto picked,so second one is not visible

我正在尝试自动执行以下网站下拉菜单:

https://qa.roofandfloor.com/

在城市部分,我们有班加罗尔和钦奈,假设班加罗尔被自动选择,所以运行下面的代码失败了:

WebElement element=driver.findElement(By.xpath("//select[@class='city-dropdown-search form-city hide select2-offscreen']"));
    Select se=new Select(element);
    se.selectByIndex(2);

它无法识别第二个城市,请帮助我我在这里做错了什么。

html标签如下:

<select id="combobox2" class="city-dropdown-search form-city hide select2-  offscreen" name="city" tabindex="-1">
 <option value="Chennai">Chennai</option>
<option selected="" value="Bangalore">Bangalore</option>
</select>

xpath 有问题还是我在这里遗漏了什么

您可以在 xpath 中使用 text() 属性 到 select text() 的 'Chennai' 选项,如下所示:

//a/span[text() = 'Chennai']

//click on the drop down
WebElement dropDown = driver.findElement(By.xpath("//*[@id='s2id_combobox2']/a/span[@class='select2-arrow']"));
dropDown.click();

//Select the dropdown value
WebElement select = driver.findElement(By.xpath("//a/span[text() = 'Chennai']"));
select.click();

您实际上可以使用 sendKeys()

输入如下内容
WebElement toElement = driver.findElement(By.id("s2id_combobox2"));
toElement.click();
driver.findElement(By.id("select2-drop")).sendKeys("Bangalore");

如果你有更多的城市,这里你可以通过改变sendKeys()

中的值

@Arun Gupta 为了使您的代码通用,您可以执行以下操作而不是对城市名称进行硬编码

  1. 创建一个城市名称数组,将其传递给 cityName 变量

  2. 将城市名称存储在 excel 文件或文本文件中,读取每个城市并将其传递给 cityName 变量

示例 1

String[] cityName = {"bangalore", "chennai", "pune"};

for(String name : cityName) {
WebElement toElement = driver.findElement(By.id("s2id_combobox2"));
toElement.click();
driver.findElement(By.id("select2-drop")).sendKeys(cityName);
}

希望对您有所帮助