我正在使用select2元素。我通过单击箭头打开选项栏,然后输入文本以将选项过滤为仅一个,然后我不知道如何点击该选项,因此可以选择任何想法吗?
driver.FindElement(By.XPath("//*[@id='s2id_testid']/a/span[2]/b")).Click();
driver.FindElement(By.CssSelector("#select2-drop input.select2-input")).SendKeys("54");
答案 0 :(得分:1)
您可以像使用FindElement
功能一样利用驱动程序的强大功能。不要使用By.XPath
或By.CssSelector
使用By.Id
,而只需确保您尝试点击的select2
元素option
具有ID。如果没有,请确保在标记中分配了一个,或者在呈现HTML时生成可预测的。
driver.FindElement(By.Id("myKnownId")).Click();
我经常尝试使用selenium功能作为可扩展性的手段。例如,您可以使用以下内容检查具有给定标识符的元素是可见还是不可见。
[Then(@"An element with the identifier (.*) is (visible|not visible)")]
public void ThenAnElementWithTheIdentifierIsVisible(string identifier, string visibility)
{
if (visibility.Equals("visible"))
{
Debug.WriteLine(string.Format("Starting to wait for element with identifier {0} to be visible.", identifier));
Driver.WaitUntil(d => d.FindElement(By.Id(identifier))
.Displayed);
}
else if (visibility.Equals("not visible"))
{
Debug.WriteLine(string.Format("Starting to wait for element with identifier {0} to not be visible.", identifier));
Driver.WaitUntil(d => !d.FindElement(By.Id(identifier))
.Displayed);
}
}
这允许重复使用,您可以轻松地看到在构建UI测试时这会变得多么强大。