Подтвердить что ты не робот

Имя класса 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>
4b9b3361

Ответ 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.