对于一个自动化的初学者来说会很常见的遇到元素明明存在却始终定位不到,
从而导致脚本报错,当然定位不到元素的原因很多,
其中一种就是多层框架iframe导致的
下方截图示意:
下方为写脚本时候的示例并其中还包含了下拉框定位问题
惜阳在开始写此模块自动化的时候,想要定位“审核状态“的下拉框但没有注意到iframe问题,导致报错报的自己都怀疑人生
后来才发现还有iframe,于是正确代码如下:
#首先进入要操作的iframe模块
iframe=driver.find_element_by_xpath("//div[@class='main_right_wrap']/iframe")
#之后用switch_to.frame()就可以了:
#注意:这里在网上查了很多资料,大多用的switch_to_frame(),
#由于这种方法已经过时,所以会在你使用的时候有删除线
#所以使用switch_to.frame()就好了
driver.switch_to.frame(iframe)
#最后要说下下拉框选择这里要调用到select:
#首先调用select
from selenium.webdriver.support.ui import Select
#之后定位select位置
select1=driver.find_element_by_xpath('//div[@class="form_box_singel_block"]/span/select')
#之后再选择select文本使用了“select_by_visible_text”,
#当然也可以使用其他方法例如value值“select_by_value”或者其他方法这里就不一一介绍了网上都有
#注意:上方代码截图只是是将定位select和选择select两步写在了一起
Select(select1).select_by_visible_text("待审核")