0

我正在尝试在以下网站下拉列表中自动化:

https://qa.roofandfloor.com/

在城市部分,我们有 bangalore 和 chennai,假设 bangalore 被自动选择,所以运行下面的代码失败:

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 是否有问题或我在这里缺少的其他东西

4

3 回答 3

0

您可以使用text()xpath 中的属性通过 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();
于 2015-06-02T09:28:53.053 回答
0

您实际上可以使用如下方式输入sendKeys()

WebElement toElement = driver.findElement(By.id("s2id_combobox2"));
toElement.click();
driver.findElement(By.id("select2-drop")).sendKeys("Bangalore");

如果您有更多城市,您可以在这里通过更改值sendKeys()

于 2015-06-02T12:35:43.933 回答
0

@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);
}

希望能帮助到你

于 2015-06-03T18:22:24.507 回答