无法切换到框架

时间:2013-12-04 11:01:56

标签: python selenium frames

我在使用Chromedriver自动化页面时遇到的问题非常困难。我在登录页面中,以下是该页面的HTML外观:

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

这是要点,页面当然有多个表格,div等... 我试图使用xpath //输入[@ 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杯咖啡,但仍然有脑冻。

有人可以指导我吗?

2 个答案:

答案 0 :(得分:0)

你可以尝试,这在Java中也应该在python中几乎相似

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

SwitchTo defaultContent有助于正确聚焦,稍后我们可以切换到窗口中所需的帧。

答案 1 :(得分:0)

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

//执行您想要对框架内的网络元素执行的操作(mainFrame),一旦完成操作,就会恢复默认

driver.switchTo().defaultContent();