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
。
我很难将 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
。