使用java的带空格的webdriver类名

使用java的带空格的webdriver类名,java,selenium,webdriver,Java,Selenium,Webdriver,这个问题在jquery中得到了很好的回答,我想知道是否有人可以举一个Java的例子 我正在做driver.findElement(By.className(“当前时间”))。单击()空间是问题所在,我在链接中看到了解释,但我不确定如何在java中处理它,并且没有更改类名的权限 粘贴我在firefox inspect id中得到的示例:下面使用cssSelector的示例不起作用,但我可能缺少一些东西 <span> <a class="current time" href="ht

这个问题在jquery中得到了很好的回答,我想知道是否有人可以举一个Java的例子

我正在做
driver.findElement(By.className(“当前时间”))。单击()空间是问题所在,我在链接中看到了解释,但我不确定如何在java中处理它,并且没有更改类名的权限

粘贴我在firefox inspect id中得到的示例:下面使用cssSelector的示例不起作用,但我可能缺少一些东西

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

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

WebElement element = driver.findElement(By.cssSelector("input[class='current time']"));
element.click();
根据提供的html编辑#1

查看您的评论中的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();
您还可以使用.partialLinkText(“此处的部分链接文本”)

您还可以将xpath用作:

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


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

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

只要在类名中找到一些空格,就需要切换到
cssSelector
Locator。 将类名转换为cssSelector(如果它有以下空格)

在您的情况下,它将是:

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

PS:添加。[dot]在类名的开头,将空格替换为。[dot]将类名转换为CSS选择器

嗨,谢谢你的帮助。这对我不起作用,我将粘贴我尝试单击的部分。当类名是一个单词,但在某些情况下是两个单词,如下面的示例所示时,这种方法就可以工作了。我试过cssSelector,但我是新手,可能很容易错过一些东西。“onclick=“s\u objectID=“我根据您提供的html更新了答案,以便更好地查看。试试看,让我们知道谢谢你的帮助。我不得不使用我试图避免使用的linktext,因为我是新手,所以目前无法说明其他示例不起作用的原因。谢谢,我的案例是button,以下是在长期斗争后对我有效的WebElement=driver.findElement(By.cssSelector(“button[class='current time']);应该注意的是,
class=“current time”
声明了一个包含两个类的元素:
current
time
。这不是一个单一的类
当前时间
@JoachimSauer它是一个伟大的新手信息
WebElement element = driver.findElement(By.cssSelector(".current.time"));
element.click();