上周产品同学想对管理后台的数据做一个监控,希望增加一些基于页面的自动化脚本。
于是我又开始用selenium写UI自动化脚本。
昨天在定位元素的时候老是报找不到元素。
看了下发现是iframe的问题,由于有阵子没写UI脚本了,于是上selenium官网查询了下iframe的操作方法。
官方文档提供了三种方法(我用的是python,官网还提供了Java,C#,Ruby,JavaScript,Kotlin的例子,非常赞!):
# Store iframe web element
iframe = driver.find_element(By.CSS_SELECTOR, "#modal > iframe")
# switch to selected iframe
driver.switch_to.frame(iframe)
# Now click on button
driver.find_element(By.TAG_NAME, 'button').click()
我用的是切换的方法,switch_to.frame(iframe)。另外,在写代码时自动联想会显示switch_to_frame(),这个方法已经不能用了。
切换可以通过iframe的ID、name、index来查找。
使用ID或name如下:
# Switch frame by id
driver.switch_to.frame('buttonframe')
# Now, Click on the button
driver.find_element(By.TAG_NAME, 'button').click()
使用index如下:
// Switches to the second frame
driver.switchTo().frame(1);
另外,在切换出iframe的时候的方法如下:
# switch back to default content
driver.switch_to.default_content()