尝试从下拉列表中选择日期格式时出现无效的选择器错误

时间:2014-05-06 16:12:33

标签: selenium rspec capybara

对于我正在测试的应用程序,我希望从下拉列表中选择日期格式。日期格式为:dd / mm / yyyy(这是下拉列表中的值)

但是在尝试选择时我收到此错误:     硒::的webdriver ::错误:: InvalidSelectorError:

任何人都知道如何从下拉列表中选择此值?将条目传递给我的测试时,我有单引号和双引号,但它不喜欢斜杠(/)。

有人有任何想法吗?

html如下:

<option class="ng-scope ng-binding" value="YYYY-MM-DD" ng-repeat="fmt in date_formats"     ng-selected="false">

2014-05-06

</option>
<option class="ng-scope ng-binding" value="DD/MM/YYYY" ng-repeat="fmt in date_formats"  ng-selected="false">

06/05/2014

</option>

我的测试使用以下方法选择格式:

def select_date_format(format)
  page.find("[value=#{format}]").click
end

在上面的方法格式中,是一个从我的spec文件传递的变量,其中包含我想要选择的日期格式。这种方法适用于破折号(即当日期格式为YYYY-MM-DD时),但是当我尝试传入一个有斜杠的值时(即-DD / MM / YYYY)

我得到错误

谢谢!

2 个答案:

答案 0 :(得分:0)

我用Java检查了它的确有效:

@Test
public void test1() { 
    WebDriver driver = new FirefoxDriver();
    driver.get("test.html");
    Thread.sleep(3000);

    driver.findElement(By.xpath("//option[@value='DD/MM/YYYY']")).click();

    String dateFormat = "DD/MM/YYYY";
    driver.findElement(By.xpath("//option[@value='" + dateFormat + "']")).click(); 

    driver.close();
}

或者您可以使用选择:

Select select = new Select(driver.findElement(By.xpath("//path_to_drop_down")));
select.deselectAll();
select.selectByVisibleText("DD/MM/YYYY");

http://selenium.googlecode.com/git/docs/api/java/org/openqa/selenium/support/ui/Select.html

答案 1 :(得分:0)

异常是抱怨CSS选择器中的斜杠。以下不被视为有效的CSS选择器:

[value=DD/MM/YYYY]

要在属性值中包含斜杠,您需要将属性值括在引号中:

[value='DD/MM/YYYY']

如果在选择器中添加引号,则您的方法应该有效:

def select_date_format(format)
  page.find("[value='#{format}']").click
end