使用Selenium C#选择只有第一个单词匹配的下拉项

时间:2016-08-11 13:59:29

标签: c# selenium

我正在尝试从下拉列表中选择一个元素。我正在为下拉列表添加一个新名称,它会被其他名称更新。假设我试图将“Foo”添加到drodown列表中,它将被“Foo 123”更新。 123是随机数。是否有类似模式匹配的东西可以在Selenium中使用。

我在C#中使用的代码是:

var StyleGroupName = Driver.Instance.FindElement(By.Name("sgroupnbr"));
StyleGroupName.Click();
var selectelement = new SelectElement(StyleGroupName);
selectelement.SelectByText(GrpName);

我的TestClass是:

  [TestMethod]
  public void Delete_Style_Group()
  {
   StyleGrp.GrpNme("ADRIJA (413)").DeleteStyleGroup();
  }
  [TestInitialize]
  public void ClassInit()
  {
  StyleGrp.Goto();
  StyleGrp.StyltGroupName("Adrija").Configuration("C3 One Tab").Save();
  }

有人可以帮忙吗?提前谢谢。

2 个答案:

答案 0 :(得分:1)

您不能通过匹配表达式来选择选项,文本需要准确。

执行此操作的替代方法是

var selectelement = new SelectElement(StyleGroupName);
foreach (var option in selectelement.Options)
{
   if (option.Text.StartsWith("ADRIJA"))
     {
         option.Click();
         break;
     }
}

参考SelectElement C# implementation

答案 1 :(得分:0)

您应尝试使用IJavascriptExecutor部分匹配选项文字,然后选择如下:

var StyleGroupName = Driver.Instance.FindElement(By.Name("sgroupnbr"));

((IJavaScriptExecutor)driver).ExecuteScript("var select = arguments[0]; for(var i = 0; i < select.options.length; i++){ if(select.options[i].text.indexOf(arguments[1]) != -1){ select.options[i].selected = true; } }", StyleGroupName, GrpName);