我已经在这个问题上进行了广泛的搜索......我已经非常接近我正在寻找的东西但是我无法让它发挥作用。
我有一个带有下拉菜单的表格,我想从相邻的单元格中读取,然后根据该单元格的值选择一个选项。但是,我只想对名为“Color Mismatch”的td类执行此操作。请参阅下面的代码段:
<td class="Color-Mismatch">
<span style="display: none">Blue</span>
<select class="input-small" id="select_color" name="select_color"><option value=""></option>
<option value="2">Red</option>
<option selected="selected" value="1">Blue</option>
</select>
</td>
<td class="Color-Mismatch">
Red <- I want to read this value and then choose it from the dropdown
<br>
<td class="Color-Match">
<span style="display: none">Blue</span>
<select class="input-small" id="select_color" name="select_color"><option value=""></option>
<option value="2">Red</option>
<option selected="selected" value="1">Blue</option>
</select>
</td>
<td class="Color-Match">
Blue <- I want to ignore this one because the colors already match
第一个"td class="Color-Mismatch"
包含下拉菜单,而第二个"td class="Color-Mismatch"
包含应该包含的值。当页面加载时,它将比较值,如果它们不匹配,则相应地命名它们。
我可以轻松查找并遍历所有"Color-Mismatch"
类并选择下拉选项。但是,我无法弄清楚如何从其他"Color-Mismatch"
类中提取值,然后从下拉列表中选择相同的值。长话短说 - &gt;我想循环遍历所有"Color-Mismatch"
类,并通过选择正确的下拉值使颜色匹配。红色 - &gt;红蓝 - &gt;蓝等等。
我想继续使用CSS选择器来完成此任务。我将所有Color-Mismatch
类的下拉框加载到如下列表中:IList<IWebElement> testList = driver.FindElements(By.CssSelector("td.Color-Mismatch select"));
。然后我正在运行foreach
循环
非常感谢任何和所有帮助!
答案 0 :(得分:-1)
如果您的HTML结构与上述相同,则以下解决方案可以正常运行......
List<WebElement> objDropDowns = driver.findElements(By.cssSelector("td.Color-Mismatch:first-child select"));
List<WebElement> objMatching = driver.findElements(By.cssSelector("td.Color-Mismatch:last-child"));
if(objDropDowns.size() > 0){
for(int iCount=0; iCount<objDropDowns.size(); iCount++){
String selectedText = objDropDowns.get(iCount).getText();
String expectedText = objMatching.get(iCount).getText();
if (!selectedText.equalsIgnoreCase(expectedText)){
Select objSelect = new Select(objDropDowns.get(iCount));
objSelect.selectByVisibleText(expectedText);
}
}
}
我是一个Java人,我只是注意到你发布了一个C#查询!! :)