我想使用硒从下拉列表中选择一个值。 值是“其他”(参见PIC)
下拉菜单的xpath是:// nz-select [@ formcontrolname ='selectedIntegrationTypes']
这是我的代码:
public static void selectDropDownByXpath()
{
WebDriver driver2 = WebDriverMgr.getDriver();
Select dropDown = new Select(driver2.findElement(By.xpath("//nz-select[@formcontrolname='selectedIntegrationTypes']")));
dropDown.selectByVisibleText("Other");
}
我收到此错误消息:
org.openqa.selenium.support.ui.UnexpectedTagNameException: Element should have been "select" but was "nz-select"
Build info: version: '3.141.59', revision: 'e82be7d358', time: '2018-11-14T08:17:03'
System info: host: 'PC', ip: '12.35.12.65', os.name: 'Windows 7', os.arch: 'amd64', os.version: '6.1', java.version: '1.8.0_65'
Driver info: driver.version: unknown
有人可以建议我如何从下拉菜单中选择值吗? 问候
答案 0 :(得分:1)
首先,这不是select
标签,而是成角度的nz-select
标签,这就是错误所在的意思
元素应为“ select”元素,但应为“ nz-select”
因此您不能使用Select类,而需要使用常规脚本标准。
您需要使用Xpath,例如:
//nz-select/ng-reflect-name='selectedIntegrationtypes'
使用标准脚本,例如:
driver.findElement(By.xpath("//nz-select/ng-reflect-name='selectedIntegrationtypes'")).click();
答案 1 :(得分:0)
一个Select元素需要一个'select'标签。在您的情况下,标签为“ nz-select”。因此,它抛出一个错误。
我会写一个下拉菜单。
public DropDownMenu(By optionsStrategy, By optionButtonStrategy, IWebDriver driver)
{
driver = driver;
optionContainerStrategy = optionsContainer;
optionsStrategy = optionsStrategy;
optionButtonStrategy = optionButtonStrategy;
optionButton = driver.FindElement(_optionButtonStrategy);
}
您可以在其中传递用于选项/项目的定位器和下拉按钮的定位器,这将触发显示下拉选项值。
var dropDown = new Dropdown(By.CssSelector("formcontrolname['selectedIntegrationTypes']")),By.CssSelector("[insert options/items identifier here]"), driver)
我们现在可以创建一种选择选项的方法
public void SelectItemByName(string itemName)
{
Actions action = new Actions(_driver);
action.MoveToElement(_optionButton).Click().Build().Perform();
Thread.Sleep(500);
GetOption(itemName, _optionsStrategy).Click();
}
private IWebElement GetOption(string optionName, By optionStrategy)
{
IWebElement optionElement = _driver.FindElements(optionStrategy).Where(x => x.Text.Trim().Trim().Equals(optionName.Trim(), StringComparison.OrdinalIgnoreCase)).FirstOrDefault();
return optionElement ?? throw new Exception($"Option {optionName} not found.");
}
private IReadOnlyCollection<IWebElement> GetOptions(By optionStrategy) => _driver.FindElements(optionStrategy);
然后您可以通过dropDown.SelectItemByName("Other")
答案 2 :(得分:-1)
尝试selectbyindex函数。
Select ddlCCType = new Select(driver.findElement(By.xpath("put xpath here..")));
ddlCCType.selectByIndex("index value..");