Подскажите пожалуста как кликнуть по елементу которий находится в iframe. Знакомий подсказал что надо делать switch . Если кто сталкивался помогите.
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);
}
}
Знакомый всё верно подсказал. Для того, чтобы нажать элемент во фрейме, в него (фрейм) нужно сначала переключиться. Делается это командой driver.switchTo().frame("имя_фрейма"), ссылка на документацию - http://selenium2.ru/docs/webdriver.html#id11
P.S. почитайте официальные доки, там есть ответы на многие вопросы новичков ;)
И не стыдно такой код новичку советовать? :)
не забудьте только выходить relative UP-ом наверх
Для python webdriver помогло
да код нормальный, но новички после таких вставок кода пугаются и говорят, я не смогу этого сделать там надо программировать :)
не забывайте снова переключаться между фреймами, если вам надо снова выполнить действие в другом фрейме или в главном окне.