Пишу авт. тест для Входа на этот сайт (просто ради практики). Когда нажимаю вход высвечивается доп. окно где выбор через, что будет вход. Смотрю в FireBuge class и записываю по какому имени искать кнопку “С помощью Google”
Экспшн типо элемент такой не найден. Кто знает подскажите в чем дело?
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import java.util.concurrent.TimeUnit;
public class Selen {
private static WebDriver driver = new FirefoxDriver();
public static void main(String[] args) {
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
driver.get("http://automated-testing.info/login");
driver.findElement(By.id("ember1160")).click();
driver.switchTo().activeElement().findElement(By.className("btn btn-social google_oauth2")).click();
Не очень я силен в синтаксисе чистого вебдрайвера, но мне кажется, что вы неправильно задаете классы. Попробуйте By.className("google_oauth2")).click();. А если хотите указать всю пачку классов, то By.cssSelector(".btn.btn-social.google_oauth2"));
насколько я понимаю через switchTo идет переключение на появившейся фрейм и в нем я ищу элемент
По идеи последняя строка должна была отработать корректно, но увы экспшн.
public static void main(String[] args) {
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
driver.get("http://automated-testing.info/login");
driver.findElement(By.id("ember1218")).click();
driver.switchTo().activeElement().findElement(By.xpath("[@class='btn btn-social google_oauth2']")).click();
}
Exception in thread "main" org.openqa.selenium.InvalidSelectorException: The given selector [@class='btn btn-social google_oauth2'] is either invalid or does not result in a WebElement. The following error occurred:
InvalidSelectorError: Unable to locate an element with the xpath expression [@class='btn btn-social google_oauth2'] because of the following error:
SyntaxError: The expression is not a legal expression.
Зачем использовать вот это - driver.switchTo().activeElement() ?
После клика на кнопку Войти, она становится активной, и Вы пытаетесь найти в ее контексте другую кнопку которой там нет.
Используйте просто driver.findElement(By.cssSelector(".google_oauth2")).click();