Selenium - 下拉框查询

时间:2016-01-14 17:26:10

标签: c# selenium webdriver selector

我目前正在使用Selenium(c#)自动化网格功能,这会将广告系列添加到表格中。

因此,在选择整数中的随机下拉值之前。我需要输入campaignName和campaignId。我有一个下拉选项,我可以将campaignName的x倍添加到campaignName + 1的增量中,所以如果我在下拉菜单中选择76,我会有campaignName + 76所以campaignName76。

不,我有一个先前执行的方法,这会生成一个随机值。例如52。现在,此值存储在_NumberValue字段中。然后创建了52个campaignNames。

这是_NumberValue稍后在另一个函数中引用,现在选项下拉递增10,20,30,40。

如果我有27,我需要选择器在菜单上选择30。这将显示行的计数,我断言它与_NumberValue和CampaignNumbers匹配。

有没有比使用条件流更简单的方法来写这个?

   private static void DisplayCorrectNumberOfRows(IWebDriver driver)
            {
                var value = CampaignBulkValue;
                WaitElements.ElementExists(By.XPath("//*[@id='PageSizeDropdown_popup']"));

                if (value <= 10)
                {
                    LinkHelper.ClickLink(By.Id("PageSizeDropdown"));
                    TextBoxHelper.InputText(By.Id("PageSizeDropdown"), "10"); 
else if (value == 11 || value <= 20)
            {
                LinkHelper.ClickLink(By.Id("PageSizeDropdown"));
                TextBoxHelper.InputText(By.Id("PageSizeDropdown"), "20");

等/

有人可以推荐一种更简洁的方法,然后只使用条件流吗?

看起来很糟糕,但我很快就这样做了!

1 个答案:

答案 0 :(得分:2)

你可以试试这个:

private static void DisplayCorrectNumberOfRows(IWebDriver driver)
{
    var value = CampaignBulkValue;
    WaitElements.ElementExists(By.XPath("//*[@id='PageSizeDropdown_popup']"));

    // maybe you want to throw an exception here when value is 0
    // or you can ignore it and set it as 10 :
    //  var pageSize = Math.Min(Math.Ceiling(value / 10.0) * 10, 10);
    var pageSize = Math.Ceiling(value / 10.0) * 10
    LinkHelper.ClickLink(By.Id("PageSizeDropdown"));
    TextBoxHelper.InputText(By.Id("PageSizeDropdown"), pageSize .ToString());
}