2015-12-31 2 views
0

Я пытаюсь получить доступ к элементу через XPath, но он не работает каким-то образом. Элемент находится в IFrame, может быть, это и есть причина? Если да, то что мне нужно сделать, чтобы иметь к нему доступ? Или может быть проблема, что я вложил два html (HTML Code Picture)? Каким будет обходной путь?Элемент доступа в iframe с селеном

Сообщение об ошибке я получаю:

org.openqa.selenium.NoSuchElementException: Не удается найти элемент: { "метод": "XPath", "селектор":».//*[@ идентификатор = 'oslist']/таблица 1/TBODY/тр 2/тд 2/стол/TBODY/тр 1/тд/а "}
длительность команды или тайм-аут: 1.14 секунды

Java Код:

@Test 
public void testGenerierter() throws Exception { 

    driver.findElement(By.id("cmdSigOn")).click(); 
    driver.findElement(By.id("k278")).click(); 
    driver.findElement(By.id("k279")).click(); 
    driver.findElement(By.id("k332")).click(); 
    Thread.sleep(3000); 
    driver.switchTo().frame("1"); 

    Thread.sleep(3000); 
    driver.findElement(By.xpath(".//*[@id='oslist']/table[1]/tbody/tr[2]/td[2]/table/tbody/tr[1]/td/a")); 
    driver.findElement(By.id("LogoutButton")).click(); 

} 

HTML Code

XPath from Firefox

+0

Можете ли вы предоставить фактический адрес веб-сайта? – Shah

ответ

0

Хорошо, ребята, это решение. Я принимаю метод с помощью Webelement

driver.switchTo().frame(driver.findElement(By.name("1"))); 
2

Попробуйте это:

driver.switchTo().frame(0); 

Вы передаете целое число, так что двойные кавычки не требуются. И попробуйте проверить правильный номер индекса iframe и следующий xpath.

+0

У меня есть попытка, но та же ошибка. Он не находит фрейм с 0 или 1 –

0

вы получаете исключение на XPath, что означает, что вы получаете ошибку на линии driver.findElement(By.xpath(".//*[@id='oslist']/table[1]/tbody/tr[2]/td[2]/table/tbody/tr[1]/td/a"));

@Test 
public void testGenerierter() throws Exception { 

driver.findElement(By.id("cmdSigOn")).click(); 
driver.findElement(By.id("k278")).click(); 
driver.findElement(By.id("k279")).click(); 
driver.findElement(By.id("k332")).click(); 
Thread.sleep(3000); 
driver.switchTo().frame(1); 
    Thread.sleep(3000); 
driver.findElement(By.xpath("Give the Relative xpath here")); 
driver.findElement(By.id("LogoutButton")).click(); 

}

PS: Почему вы используете абсолютное xpath.Relative XPath является лучшей практикой

+0

Я пробовал абсолют и релятивистский путь. Путь генерирует Firefox с плагином firepath. Я попробовал absolut, потому что я разобрал iframes –

+1

Вы можете поделиться скриншотом кода, на котором вы находите xpath или URL-адрес –

+0

Я скорректировал свой вопрос с изображением, где я нахожу xpath –

Смежные вопросы