当前位置: 首页 > 知识库问答 >
问题:

如何在C#中将datatable转换为webelement的列表

邵华皓
2023-03-14

我是C#新手,我正在使用specflow

我正在自动化一个场景,其中需要检查多个元素,如果它们是启用的。这些元素来自页面的不同部分,具有不同的XPath。

我想的方法是

foreach (webelement e in list)
{
    element.isEnabled();
}
Scenario: Validate G Functionality
    Given Open URL
    When verifies fields
        | Gmail  |
        | Images |
[When(@"verifies fields")]
        public void WhenVerifiesFields(Table table)

        {
           for(int i=0;i<=table.Rows.Count;i++)
            {


                IWebElement ew= table.Rows[i] as IWebElement;
                Assert.False(ew.Enabled);
            }

页面类:

[FindsBy(How = How.LinkText, Using = "Gmail")]
    private IWebElement Gmail;

    [FindsBy(How = How.LinkText, Using = "Images")]
    private IWebElement Images;

我得到以下错误

    Validate G Functionality [FAIL]
    [xUnit.net 00:00:06.38]       System.NullReferenceException : Object reference not set to an instance of an object.
    [xUnit.net 00:00:06.38]       Stack Trace:
    [xUnit.net 00:00:06.38]         /*line pointed here is 
 ew.enabled*/C:\Users\StepDefinition\TestStepsOne.cs(53,0): at BillTrackerAutomation.StepDefinition.TestStepsOne.WhenVerifiesFields(Table table)
    [xUnit.net 00:00:06.38]            at lambda_method(Closure , IContextManager , Table )

共有1个答案

姬乐
2023-03-14

您可以通过[StepArgumentTransformation]实现这一点

  Scenario Outline: examples with step argument
  Given we have '<Webelements>'

  Examples:
  | Webelements | 
  |     Gmail   |

步骤定义如下:

  using TechTalk.SpecFlow;
  using OpenQA.Selenium.Chrome;
  using OpenQA.Selenium.Support.UI;
  using NUnit.Framework;

[Binding]
   public class Browser
  {
     private readonly BrowserDriver _browserDriver;
     public static  OpenQA.Selenium.IWebDriver driver ;

      public Browser(BrowserDriver browserDriver, FeatureContext featureContext)
    {
        _browserDriver = browserDriver;  //your chrome driver
        driver = _browserDriver._driver;
        _featureContext = featureContext;
        _featureContext.Add("driver", driver);
    }

     [Given(@"we have '(.*)'")] 

    public void webelements(ChromeWebElement o)
    {
       Assert.False(o.Displayed);
    }

    [StepArgumentTransformation]
      public ChromeWebElement convertToWebElement(string c)
      {
        ChromeDriver parent = _featureContext.Get<ChromeDriver>("driver");
        return new ChromeWebElement(parent, c);
    }  

显然,您得到的结果元素没有附加到页面文档,因为我只是使用了Gmail进行测试

 类似资料:
  • 在我的Spring Boot项目中,我有两个类(实体和模型) 在模型中有一个列表 :

  • 本文向大家介绍C#将DataTable转换成list的方法,包括了C#将DataTable转换成list的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了C#将DataTable转换成list及数据分页的方法。分享给大家供大家参考。具体如下: 将一个DataTable转换成一个List 首先定义一个接收DataTable字段列的类 。类的字段与DataTable的列字段一致 希望本文所

  • 问题内容: 我将类型为DataTable的对象保存到SQL 2005数据库中的类型为varbinary的字段中。我想找回它,但无法键入强制转换。这就是我保存它的方式。 “ dt”是DataTable对象实例。 问题答案: 您在说的是二进制序列化和反序列化。也许这会有所帮助。

  • 问题内容: 我有如下的Json字符串 我想将Json字符串转换为以下类 我的反序列化代码是 但是我在序列化后得到空值,我该如何解决呢? 问题答案: 正如其他人已经指出的那样,未获得预期结果的原因是因为JSON与尝试反序列化的类结构不匹配。您需要更改JSON或更改类。由于其他人已经展示了如何更改JSON,因此在这里我将采用相反的方法。 为了与您在问题中发布的JSON相匹配,您的类应按照以下定义。注意

  • 问题内容: 我正在寻找C#代码以将HTML文档转换为纯文本。 我不是在寻找简单的标记剥离方法,而是会输出纯文本并 合理 保留原始布局的东西。 输出应如下所示: W3C的Html2Txt 我看过HTML Agility Pack,但我认为这不是我所需要的。有人还有其他建议吗? 编辑: 我只是从CodePlex下载HTML Agility Pack ,并运行了Html2Txt项目。真令人失望(至少是将

  • 本文向大家介绍C#中将DataTable转换成CSV文件的方法,包括了C#中将DataTable转换成CSV文件的方法的使用技巧和注意事项,需要的朋友参考一下 DataTable用于在.net项目中,用于缓存数据,DataTable表示内存中数据的一个表。CSV文件最早用在简单的数据库里,由于其格式简单,并具备很强的开放性,所以起初被扫图家用作自己图集的标记。CSV文件是个纯文本文件,每一行表示一