【问题标题】:Reading in checkbox values in c# using selenium使用 selenium 在 c# 中读取复选框值
【发布时间】:2018-02-28 23:34:06
【问题描述】:

您好,我正在使用 c# 和 selenium 进行测试自动化项目。我正在从 excel 文件中读取值,但是在读取复选框值时遇到问题,我不确定如何动态读取值。在一个简单的情况下,这是我当前的源代码:

class LoginPageObject
{
    public LoginPageObject()
    {
        PageFactory.InitElements(PropertiesCollection.driver, this);
    }


    [FindsBy(How = How.CssSelector, Using = "[customid = '5624']")]
    public IWebElement selectCheckbox { get; set; }

    [FindsBy(How = How.Name, Using = "UserName")]
    public IWebElement txtUserName { get; set; }

    [FindsBy(How = How.Name, Using = "Password")]
    public IWebElement txtPassword { get; set; }

    [FindsBy(How = How.Name, Using = "Login")]
    public IWebElement btnLogin { get; set; }


    // Method to Perform Login
    public PageObject Login(string userName, string password)
    {
        //Select checkbox
        selectCheckbox.Click();

        // Send Username 
        txtUserName.EnterText(userName);

        // Send Password 
        txtPassword.EnterText(password);

        // Click Login Button
        btnLogin.ClickSubmit();

        return new PageObject();
    }
}

这很好用,但是我想采用一种更动态的方法,其中自定义 id 不是硬编码的,如下所示:

    class LoginPageObject
{
    string value = "5624";
    public LoginPageObject()
    {
        PageFactory.InitElements(PropertiesCollection.driver, this);
    }


    [FindsBy(How = How.CssSelector, Using = "[customid = '"+ value + "']")]
    public IWebElement selectCheckbox { get; set; }

    [FindsBy(How = How.Name, Using = "UserName")]
    public IWebElement txtUserName { get; set; }

    [FindsBy(How = How.Name, Using = "Password")]
    public IWebElement txtPassword { get; set; }

    [FindsBy(How = How.Name, Using = "Login")]
    public IWebElement btnLogin { get; set; }


    // Method to Perform Login
    public PageObject Login(string userName, string password, string value)
    {
        //Select checkbox
        selectCheckbox.Click();

        // Send Username 
        txtUserName.EnterText(userName);

        // Send Password 
        txtPassword.EnterText(password);

        // Click Login Button
        btnLogin.ClickSubmit();

        return new PageObject();
    }
}

很明显上面的源代码不会编译,但我想知道如何处理这个问题,这样复选框就不会以某种方式被硬编码。

【问题讨论】:

    标签: c# excel selenium checkbox


    【解决方案1】:

    FindsBy 注解只能使用 const 字符串作为 Using 参数。这也在编译时进行评估。

    当您不使用页面工厂时,这是可能的。您只需找到这样的复选框:

    string value = "5624";
    IWebElement checkbox = driver.FindElement(By.CssSelector("[customid = '"+ value + "']"));
    checkbox.Click();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-05-13
      • 2012-06-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多