Имя класса webdriver с пробелом с помощью java
Этот вопрос получил большие ответы в jquery, и мне было интересно, может ли кто-нибудь дать пример этого в Java, пожалуйста?
Я делаю driver.findElement(By.className("current time")).click();
Пространство - это проблема, и я вижу объяснение по ссылке, но я не уверен, как обрабатывать ее в java, и у меня нет доступа к изменению имени класса.
Вставка примера того, что я получаю в firefox, проверяю id: Пример с помощью cssSelector ниже не работает, но я могу что-то пропустить.
<span>
<a class="current time" href="#" onclick="location.href='http://someurl/'; return false;" onclick="s_objectID="http://someur/">url</a>
</span>
Ответы
Ответ 1
Вместо имени класса вы можете использовать селектор 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();
ИЛИ
WebElement element = driver.findElement(By.xpath("//a[text() = 'url']"));
element.click();
Ответ 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.