Есть отличная удаленная работа для php+codeception+jenkins+allure+docker спецов. 100% remote! Присоединиться к проекту

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


(Vladimir Zuy) #1

Остановился на айфрейме, когда перехожу на сайт оптек - не находит елементы.
Вот скрин где сам айфрейм http://prntscr.com/2sf7ya

	@Test
	public void Getsomething(){

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

(Владимир) #2

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


(Дмитрий Жарий) #3

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

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

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


(Vladimir Zuy) #4

Установил вашу программку http://www.screencapture.ru/file/175b99F1 - и вот вопрос:

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

  2. НАПИСАЛЛЛЛЛЛ))) УРРРРАА))) - -ну вот собственно тот самый фрейм
    http://www.screencapture.ru/file/eA7050f1

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

(Дмитрий Жарий) #5

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

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

platform_review.chart_frame1

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

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

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


(Vladimir Zuy) #6

Вообщем опять остановился на фрейме) - не работает когда перехожу во второй айфрейм
пробовал - 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);

(Александр Таранков) #7

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


(Александр Таранков) #8

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


(Илья Заволокин) #9

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

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

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


(Dmitrii Demin) #10

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


(Илья Заволокин) #11

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