【发布时间】:2018-02-02 17:12:34
【问题描述】:
我是 Selenium for Python 的新手,我试图在多个 iframe 中定位元素。 这是我能看到的 DOM 元素。
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>...</head>
<body>
<form>
...
<div class="page">
<div class="main clear" style="z-index: 20; position:relative;">
<div id="placeOrder">
<iframe src="BuyFlow.aspx" frameborder="0" width="1150" height="950">
#document
<html>
<body>
<form>
...
<iframe id="CreativeLiftFrame">
#document
<html>
...
<body id="multiple-addresses">
...
</body>
</html>
</iframe>
</form>
</body>
</html>
</iframe>
</div>
</div>
</div>
</form>
</body>
</html>
我想要做的是获取第二个<iframe> 的<body> 标签的id 名称。
那是"multiple-addresses"。
为了做到这一点,我编写了如下代码。
# Switch to the first iframe
iframe = driver.find_element(By.TAG_NAME, 'iframe')
driver.switch_to_frame(iframe)
# Fill in Address and ZipCode inputbox and submit form
address_input.send_keys(address)
postcode_input.send_keys(postcode)
postcode_input.send_keys(Keys.RETURN)
# Check Available - Inner iframe
second_iframe = WebDriverWait(driver, 30).until(EC.presence_of_element_located((By.TAG_NAME, 'iframe')))
driver.switch_to_frame(second_iframe)
print(second_iframe.get_attribute("id")
body = WebDriverWait(driver, 30).until(EC.presence_of_element_located((By.TAG_NAME, 'body')))
print(body.get_attribute("id")
结果,我在控制台上得到了 2 个输出。
CreativeLiftFrame
None
如您所见,selenium 驱动程序定位到第二个iframe,但在第二个iframe 中找不到body 标签的id。
我不知道如何处理它。
【问题讨论】:
-
我在您的代码中看到两条打印语句和三行输出。产生错误的原因是什么?
-
嗨,一个是例外。
-
我明白了,但是什么命令产生了异常?
-
我将脚本运行为 >>>python run.py。我的意思是上面的代码是sn-p,其他代码发生异常。
-
您发布的脚本根本没有运行 ;)
标签: python selenium iframe selenium-webdriver