使用java的空间webdriver类名

时间:2011-09-19 18:18:52

标签: java selenium webdriver

这个问题在jquery中得到了很好的答案,我想知道是否有人能用Java提供this的例子吗?

我正在做driver.findElement(By.className("current time")).click();空间是问题,我在链接上看到了解释,但我不确定如何在java中处理它,并且不要有权更改班级名称。

粘贴我在firefox检查id中获得的示例:下面的cssSelector示例不起作用,但我可能会遗漏某些内容。

<span>
<a class="current time" href="http://someurl/"   onclick="s_objectID="http://someur/">url</a>
</span>

3 个答案:

答案 0 :(得分:49)

您可以使用css选择器代替类名。您没有提及类“当前时间”的标记名。我假设它是输入,所以你的css选择器工作,

WebElement element = driver.findElement(By.cssSelector("input[class='current time']"));
element.click();

编辑#1 根据提供的HTML,

查看评论中的html,似乎有很多选项可以找到webElement。以下是您的选择,

WebElement element = driver.findElement(By.cssSelector("a[class='current time']"));
element.click();

或者这也应该有效,

WebElement element = driver.findElement(By.cssSelector("a.current.time"));
element.click();

您也可以使用linkText,因为该元素是链接。根据您提供的HTML,链接文本为“url”

WebElement element = driver.findElement(By.linkText("url"));
element.click();

您也可以使用By.partialLinkText("partial link text here");

您也可以将xpath用作:

WebElement element = driver.findElement(By.xpath("//a[@class='current time']"));
element.click();

OR,

WebElement element = driver.findElement(By.xpath("//a[text() = 'url']"));
element.click();

答案 1 :(得分:3)

对于不太脆弱的测试,另一种选择是使用不依赖于类的顺序的XPATH,例如:

WebElement element = driver.findElement(By.xpath("//a[contains(@class, 'current') and contains(@class, 'time')]"));

答案 2 :(得分:0)

每当您在类名中找到一些空格时,您需要切换到cssSelector定位器。 如果类名具有如下空格,则将类名转换为cssSelector。

在你的情况下,它将是:

WebElement element = driver.findElement(By.cssSelector(".current.time"));
element.click();

PS:添加。 [dot] 在类名称的开头,用替换空格。 [dot] 将类名转换为cssSelector。