【问题标题】:Not able to set value to dropdown(developed using angular js) using selenium C#无法使用 selenium C# 将值设置为下拉列表(使用 Angular js 开发)
【发布时间】:2017-08-13 11:29:24
【问题描述】:

每次我在下拉列表中选择一个值时,都会为其值生成一组新代码。

<div class='k-li-stscroller'>
<ui id='prdtype_listbox>
<li data-offset-index="0">Test0</li>
<li data-offset-index="0">Test1</li>
<li data-offset-index="0">Test2</li>
<li data-offset-index="0">Test3</li>
<li data-offset-index="0">Test4</li>
 </ui>
 </div>

 <div class='k-li-stscroller'>
 <ui id='prdtype_listbox>
 <li data-offset-index="0">Test0</li>
 <li data-offset-index="0">Test1</li>
 <li data-offset-index="0">Test2</li>
 <li data-offset-index="0">Test3</li>
 <li data-offset-index="0">Test4</li>
 </ui>
  </div>
     ReadOnlyCollection<IWebElement> prd =      driver.FindElements(By.XPath("//div[@class='k-list-scroller']/ul[@id='prdtype_listbox']"));
     ReadOnlyCollection<IWebElement> ListVal=prd[0].FindElements(By.XPath("*"));

 foreach (var lst in ListVal)
 {

     string liText = lst.text();
     if (liText.Equals("Test1"))
     {
      lst.click();
       break;
     }
  }

它选择了Test1,然后再次选择了默认值。 如何设置选中的值。

【问题讨论】:

  • 请花几分钟时间来正确格式化 HTML 和代码。还要将 HTML 与代码分开,以便更容易理解。
  • HTML 是否出于某种原因列出了两次?这两个例子看起来完全一样。
  • HTML代码列了两次,说明它生成了多次
  • 我有一个不是选择的下拉菜单,现在每次我选择 value 时,都会生成 div。因此我无法设置该值。它选择给定值,然后再次选择默认值。
  • 你能链接页面吗?您是否尝试过我在下面发布的代码?它应该可以工作。

标签: javascript c# angularjs selenium


【解决方案1】:

对于不是SELECT 的下拉菜单,您通常需要单击下拉菜单一次将其打开,然后单击列表中显示的所需元素。我会为这样的东西编写一个函数,以便它可以重复使用。

public void SetValue(string value)
{
    IWebElement dropdown = Driver.FindElement(By.Id("prdtype_listbox"));
    dropdown.Click();
    dropdown.FindElement(By.XPath($".//li[.='{value}']")).Click();
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-21
    • 2020-08-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-23
    相关资源
    最近更新 更多