2013-12-04 7 views
3

У меня возникли трудности с пониманием проблемы. У меня есть время для автоматизации страницы с помощью Chromedriver. Я на странице авторизации и вот как HTML для страницы выглядит:Невозможно переключиться на кадр

<frame name="mainFrame" src> 
    <body> 
    <table ..> 
     <tr> 
     <td ..> 
     <input type="password" name="ui_pws"> 
     </td> 
    .. 
    .. 
    .. 
</frame> 

Это суть, страница, конечно, имеет несколько таблиц, дивы, и т.д ... Я пытаюсь ввести пароль во входном элементе с использованием xpath // input [@ name = "ui_pws"]. Но элемент не был найден.

Так я думал, что это может быть из-за неправильного кадра, и я попробовал:

driver.switch_to_frame('mainFrame') 

и он не смог с NoSuchFrameException. Поэтому я переключился на:

main_frame = driver.find_element_by_xpath('//frame[@name="mainFrame"]') 
    driver.switch_to_frame(main_frame) 

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

current_frame = driver.execute_script("return window.frameElement") 

И к моему удивлению, я получил два разных элемента при печати его. Теперь я действительно смущен относительно того, что я должен делать для переключения кадров или доступа к полю пароля на веб-странице. У меня было 4 чашки кофе с утра, и у меня все еще есть замораживание мозга.

Может ли кто-нибудь направить меня этим?

ответ

0

Вы можете попробовать это в Java должен быть почти похож на питона слишком

driver.switchTo().defaultContent(); 
WebElement frameElement = driver.findElement(By.xpath("//frame[@name='mainFrame']")); 
drive.switchTo().frame(frameElement); 

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

0
driver.switchTo().frame(driver.findElement(By.xpath("//frame[@ name='mainFrame']"))); 

// выполнить операцию, которую вы хотите выполнить на веб-элементов, присутствующих в кадре (Mainframe) после того, как вы закончите ваш операция вернется по умолчанию

driver.switchTo().defaultContent(); 
Смежные вопросы