无法切换到框架

3

我在自动化使用Chromedriver时遇到了一个问题,我非常困难地理解它。我现在在登录页,以下是该页面的HTML代码:

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

这是一个代码片段,该页面有多个表格、div等元素…… 我试图使用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杯咖啡,但我的大脑还是冻结了。

有人可以指导我吗?

2个回答

0

你可以尝试,这在Java中应该在Python中也类似。

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)中执行您想要执行的Web元素操作,完成操作后返回默认

driver.switchTo().defaultContent();

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接