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

本文关键字:单词匹 第一个 Selenium 选择 使用 | 更新日期: 2023-09-27 18:02:03

我正在尝试从下拉菜单中选择一个元素。我正在添加一个新名称到下拉列表,它正在被一些其他名称更新。假设如果我试图将"Foo"添加到下拉列表中,它会被"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();
  }

有人能帮帮我吗?

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

不能通过匹配表达式来选择选项,文本必须精确。

另一种方法是

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

参考SelectElement c#实现

您应该尝试使用部分匹配选项文本的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);