[selenium&Python] find_element_by_name找不到element

用python+selenium写脚本时遇到一个问题:find_element_by_name找不到element. 我用的是Chrome, 而用Firefox+Selenium IDE时就能正常find element. 

web相关代码如下:

<input type="button" value="Log In" name="logon" οnclick="javascript:gotoLogon()" >

从代码看 find_element_by_name("logon")是绝对没有错的,而且从Selenium IDE中copy来的代码也印证了这点。难道是Selenium IDE设置的延时比较合适?我试了下

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait # available since 2.4.0
from selenium.webdriver.support import expected_conditions as EC # available since 2.26.0


element = WebDriverWait(chrome, 10).until(EC.presence_of_element_located((By.NAME, "logon")))
(这是docs.seleniumhq.org的代码)

10s内网页早显示正常了,但还是没有发现element,然后我用find_element_by_xpath("//input[@='logon']")也不起作用。再试试查找同页面的其它元素,大多数找不到!奇了怪了!于是chrome中右键"view page code"看看有什么不一样的地方,竟然发现上面那段代码没有在源码中!仔细看了下原来是FRAME在作怪:

<FRAMESET BORDER=0 FRAMEBORDER=0 FRAMESPACING=0>
    <FRAME SCROLLING="auto" NORESIZE NAME="mainFrame" SRC="xxxxxxx" target="_top">
</FRAMESET>
于是添加 switch_to_frame("mainFrame")解决问题。


总结:

1. Chrome右键菜单的"Inspect element""View page source"还是有区别呀,仔细瞧在网页存在FRAME时还会出现个"View frame source"
2. Selenium IDE中咋把switch_to_frame这句省略了呢?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值