Не могу пройти Iframe in Java

Остановился на айфрейме, когда перехожу на сайт оптек - не находит елементы.
Вот скрин где сам айфрейм Screenshot by Lightshot

	@Test
	public void Getsomething(){

	    driver.navigate().to("https://www.opteck.com");
    driver.switchTo().frame("reg_form");
    driver.findElement(By.id("olgs_fullname")).sendKeys("test");
	}}

на скриншоте не присутствует элемент с id olgs_fullname , может поэтому и не находит?

Привет, Владимир,

Причина в том, что на странице есть 2 фрейма с именем «reg_form». Нужный элемент находится во втором, а ваш код находит первый, в котором элемента нет.

Небольшое видео с элементами самопиара…

3 лайка

Установил вашу программку Программа для создания скриншотов - и вот вопрос:

  1. во вкладке фрейм всплывают все фреймы что находятся на странице?

  2. НАПИСАЛЛЛЛЛЛ))) УРРРРАА))) - -ну вот собственно тот самый фрейм
    Программа для создания скриншотов

        driver.navigate().to("https://www.opteck.com");
    driver.switchTo().frame(driver.findElement(By.cssSelector("#jn_form>iframe")));
    driver.findElement(By.name("fullname")).sendKeys("test");
    

Поздравляю с новым багом :wink:

Да. Тут я хотел бы ещё добавить, что иерархия (вложенность) фреймов разделяется через точку.
Например,

platform_review.chart_frame1

Означает, что chart_frame1 вложен в platform_review

Когда у фрейма нет имени – берется индекс, начиная с нуля.

Например, 11.0 означает, что в фрейме с индексом 11 есть вложенный фрейм с индексом 0.

Вообщем опять остановился на фрейме) - не работает когда перехожу во второй айфрейм
пробовал - driver.switchTo().defaultContent(); но всё ровно не проходит - уже закончились идеи как это обойти, вот код:

driver = new ChromeDriver();
		driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
		driver.manage().window().maximize();
		driver.get("http://crazymailing.com");
		String email =  driver.findElement(By.id("email_addr")).getText();
	    System.out.print(email);
	    driver.navigate().to("https://www.opteck.com");
	    
	    driver.switchTo().frame(driver.findElement(By.cssSelector("#jn_form>iframe")));
	   
	    driver.findElement(By.name("fullname")).sendKeys("test");
	    driver.findElement(By.id("olgs_email")).sendKeys(email);
	    driver.findElement(By.id("olgs_phone")).sendKeys("0987654321");
	    driver.findElement(By.id("olgs_submit")).click();
	    System.out.println(driver.getTitle()); // показывает что я на страничке
	    driver.switchTo().frame(driver.findElement(By.xpath("//*[@class='open-account-form']/iframe")));
	    System.out.println(driver.findElement(By.xpath("//span[@user-name]")).getText()); // показывает что я не во фрейме
	    
	    driver.findElement(By.xpath("//*[@class='btn_big']")).click();
	    String HASH_id= driver.findElement(By.xpath("//div[@class='account-number']")).getText();
	    System.out.println(HASH_id);

Как отвечающие должны догадаться в какой строке происходит ошибка и что это за ошибка?

Прочитай FAQ (я тебе ссылку 3 раза скидывал) и научись форматировать код!

У меня аналогичная проблема, сижу мучаюсь неделю.я пробовал установить swg recorder но ничего не помогает.Вот код страницы http://joxi.ru/12MeaBaHW0Y52J .
я пишу вот такой код

webDriver.switchTo().frame(webDriver.findElement(By.id(“mce_5_ifr”)));
webDriver.findElement(By.id(“tinymce”)).sendKeys(“nhekzkzk”);

подскажите пожалуйста что делаю не правильно.

Возможно frame живет еще в одном frame, в таком случае нужно переключаться по очереди - с родительского до дочернего

спасибо! заработало.причина была глупая, я не установил интервал времени ожидания((
по этому не отрабатывал элемент.