t.me/atinfo_chat Telegram группа по автоматизации тестирования

Как нажать елемент которий находится в iframe?


(Batyar) #1

Подскажите пожалуста как кликнуть по елементу которий находится в iframe.  Знакомий подсказал что надо делать switch . Если кто сталкивался помогите.


(mbeider) #2

  public static void switchFrame(){

    for (int i = 0 ; i < 50; i++)
        {

        wait(500);

        List<WebElement> frameset = DRIVER.findElements(By.tagName("iframe"));  
        
        try {
                DRIVER.switchTo().frame(frameset.get(frameset.size() - 1).getAttribute("name"));
                
                wait(1000);
                
                DRIVER.switchTo().activeElement();
                break;
            } catch (Throwable t)
            {
                System.out.println("new frame switch failed. retrying.");
            }
        }
    }
   

    public static void switchFrame(int index){

    for (int i = 0 ; i < 50; i++)
        {

        wait(500);

        List<WebElement> frameset = DRIVER.findElements(By.tagName("iframe"));  
        
        try {
            DRIVER.switchTo().frame(frameset.get(index).getAttribute("name"));
                Thread.sleep(500,0);
                DRIVER.switchTo().activeElement();
                break;
            } catch (Throwable t)
            {
                System.out.println("new frame switch failed. retrying." + t);
            }
        }
    }

    public static void switchFrame(String name){

        wait(500);

        List<WebElement> frameset = DRIVER.findElements(By.tagName("iframe"));  
        
        try {
            for(WebElement frame : frameset )
            {
                if(frame.getAttribute("id").indexOf(name) != -1)
                {
                    DRIVER.switchTo().frame(frame.getAttribute("name"));
                    Thread.sleep(500,0);
                    DRIVER.switchTo().activeElement();
                    break;
                }
            }
        } catch (Throwable t)
        {
            System.out.println("new frame switch failed. retrying." + t);
        }
    }


(Alexander Ivanovsky) #3

Знакомый всё верно подсказал. Для того, чтобы нажать элемент во фрейме, в него (фрейм) нужно сначала переключиться. Делается это командой driver.switchTo().frame("имя_фрейма"), ссылка на документацию - http://selenium2.ru/docs/webdriver.html#id11

P.S. почитайте официальные доки, там есть ответы на многие вопросы новичков ;)


(Alexander Ivanovsky) #4

И не стыдно такой код новичку советовать? :)


(Taras) #5

не забудьте только выходить relative UP-ом наверх 


(Batyar) #6

Для python webdriver помогло 

 

driver.switch_to_frame("iframe")
driver.find_element_by_name("action_dummy").click()

(Mykhailo Poliarush) #7

да код нормальный, но новички после таких вставок кода пугаются и говорят, я не смогу этого сделать там надо программировать :)


(Mykhailo Poliarush) #8

не забывайте снова переключаться между фреймами, если вам надо снова выполнить действие в другом фрейме или в главном окне.