Iframe Selenium 问题 [Python]

Issue with Iframe Selenium [Python]

我很难将 Selenium 与 iframe 一起使用。

所以基本上网站是这样建立的:

  <tbody>
      <tr>
        <td>
          <iframe>
            <html>
          </iframe>
        </td>
      </tr>
  </tbody>
</table>
<table>

我想访问 html 标签并在那里使用发送键,以便自动填写显示的表格。 我尝试使用 Xpath 但它不起作用。经过大约 3 天的反复试验并到处寻找我找不到解决方案,我得到这样的错误: frame.send_keys(Keys.TAB) AttributeError: 'list' 对象没有属性 'send_keys'

我什至尝试将 TAB 键发送到 select 我想要的但没有任何效果。

frame = driver.find_elements_by_xpath(
        '/html/body/div[11]/div/div/form/div[1]/div/div/form/div[1]/div[2]/table/tbody/tr[2]/td')
    time.sleep(1)
    time.sleep(1)
    frame.send_keys(Keys.TAB)
    frame.send_keys("hello")

如果有人有解决方案,我将不胜感激。

最佳

我建议您切换到这样的框架(明确等待):

wait = WebDriverWait(driver, 10)
wait.until(EC.frame_to_be_available_and_switch_to_it((By.XPATH, "iframe xpath")))

进口:

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC

切换后,您可以像这样发送密钥:

wait.until(EC.element_to_be_clickable((By.XPATH, "form xpath "))).send_keys("some string")

完成后,您应该像这样切换到 default content

driver.switch_to.default_content()

这基本上就是切换到 iframe,现在进入您的 代码 :

您使用了 find_elements_by_xpath,它将 return 一个列表,在您的例子中,您已经将 frame 作为列表的名称。

在python列表中,我们不能做send_keys,因为Selenium支持send_keys