【问题标题】:webdriver classname with space using java使用java的带有空格的webdriver类名
【发布时间】:2011-11-20 11:39:58
【问题描述】:

这个问题在 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>

【问题讨论】:

  • 需要注意的是class="current time"声明了一个带有两个类的元素:currenttime。它不是单个类current time
  • @JoachimSauer 这对新手来说是一个很好的信息

标签: java selenium webdriver


【解决方案1】:

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

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

Edit#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();

或,

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

【讨论】:

  • 您好,感谢您的帮助。那对我不起作用,我将粘贴我要单击的部分。这在类名是一个单词时有效,但在某些情况下它是两个单词,如下例所示。我尝试了 cssSelector 但我是新手,很容易错过一些东西。 someurl" onclick="s_objectID="someur/">url</a>
  • 我根据您提供的 html 更新了答案,以便更好地查看。试试看,让我们知道
  • 感谢您的帮助。我不得不使用我试图避免的链接文本,我是新手,所以目前无法说明为什么其他示例不起作用。
  • 谢谢,因为我的情况是按钮,经过长时间的努力,以下对我有用 WebElement element = driver.findElement(By.cssSelector("button[class='current time']"));
【解决方案2】:

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

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

【讨论】:

    【解决方案3】:

    每当您在类名中发现一些空格时,您需要切换到cssSelector Locator。 如果类名有如下空格,则将其转换为 cssSelector。

    在你的情况下是:

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

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

    【讨论】:

      猜你喜欢
      • 2014-07-12
      • 2016-05-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-17
      • 2021-12-14
      • 1970-01-01
      • 2011-05-29
      相关资源
      最近更新 更多