使用Selenium,我尝试在iframe中找到一个元素。
以下是HTML代码:
<iframe id="DWT54_content_ifr" src='javascript:""' frameborder="0"
allowtransparency="true" title="Texte richeFaites ALT-F10 pour accéder à la
barre d'outils. Faites ALT-0 pour accéder à l'aide" style="width: 100%;
height: 0px; display: block;">
<body id="tinymce" class="mceContentBody "
onload="window.parent.tinyMCE.get('DWT54_content').onLoad.dispatch();"
contenteditable="true" dir="LTR" style="font-family: "times new
roman", "new york", times, serif; font-size: 14pt; color:
rgb(0, 0, 0);"><div><br></div></body></iframe>
这是我进入iframe的Python代码:
time.sleep(3)
driver.switch_to_frame(driver.find_element_by_id("DWT54_content_ifr"))
I also tried these codes:
driver.switch_to_frame("DWT54_content_ifr")
and
driver.switch_to_frame(driver.find_element_by_xpath("//iframe[@id='DWT54_content_ifr']"))
但每次我都得到同样的错误:“无法找到元素”。
更新
我设法使用以下代码进入iframe:
driver.switch_to_frame(3)
但这不太方便,因为我必须手动计算页面中iframe的数量......
请帮忙吗?
感谢。
答案 0 :(得分:0)
根据HTML
您已共享id
属性的值,即 DWT54
对我来说看起来很动态。因此,我们必须构建一个动态css
或xpath
来标识frame
,而不是driver.switch_to_frame(driver.find_element_by_id(frame_reference))
我们必须使用 driver.switch_to.frame(frame_reference)
如下:
driver.switch_to.frame(driver.find_element_by_xpath("//iframe[contains(@id,'_content_ifr') and contains(@title,'Texte richeFaites')]"))