对于我正在测试的应用程序,我希望从下拉列表中选择日期格式。日期格式为: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)
我得到错误谢谢!
答案 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