如何做分类网站信息营销,产品展示网站模板,可以做网站的服务器,购物网站开发小结多层框架或窗口定位#xff1a; switch_to_frame()switch_to_window()智能等待#xff1a; implicitly_wait()现在web应用中经常会遇到框架如#xff08;frame#xff09;或窗口#xff08;windows#xff09;的应用#xff0c;这样定位就比较难#xff0c;有时定位一个…多层框架或窗口定位 switch_to_frame()switch_to_window()智能等待 implicitly_wait()现在web应用中经常会遇到框架如frame或窗口windows的应用这样定位就比较难有时定位一个元素定位器没有问题但是就是定位不到这时就需要检查一下这个元素是否存在在一个frame中。 webdriver中switch_to_frame就可以解决这个问题。 代码1(frame.html) html
head
meta http-equivcontent-type contenttext/html;charsetutf-8 /
titleframe/title
script typetext/javascript async
srchttp://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js
/script
link hrefhttp://netdna.bootstrapcdn.com/twitter-bootstrap/2.3.2/css/bootstrap-combined.min.css relstylesheet /
script typetext/javascript
$(document).ready(function(){
});
/script
/head
body
div classrow-fluid
div classspan10 well
h3frame/h3
iframe idf1 srcinnerhtml width800,
height600/iframe
/div
/div
/body
script srchttp://netdna.bootstrapcdn.com/twitter-bootstrap/2.3.2/js/bootstrap.min.js/script
/html 代码2inner.html html
head
meta http-equivcontent-type contenttext/html;charsetutf-8 /
titleinner/title
/head
body
div classrow-fluid
div classspan6 well
h3inner/h3
iframe idf2 srchttp://www.baidu.com width700
height500/iframe
a hrefjavascript:alert(watir-webdriver better than
selenium webdriver;)click/a
/div
/div
/body
/html frame中嵌套inner两个脚本放在同一个目录下。 代码如下 #codingutf-8
from selenium import webdriver
from time import sleepimport os
br webdriver.Firefox()
file_path file:/// os.path.abspath(frame.html)
br.get(file_path)br.implicitly_wait(30)
#先找到到iframe1id f1
br.switch_to_frame(f1)
#再找到其下面的iframe2(id f2)
br.switch_to_frame(f2)#下面就可以正常的操作元素了
br.find_element_by_id(kw).send_keys(selenium)
br.find_element_by_id(su).click()
sleep(1)br.quit() 按上面方式就可以定位到元素 switch_to_window() 有可能嵌套的不是框架而是窗口对窗口的方法switch_to_window用法与switch_to_frame 相同dr.switch_to_window(windowName) br.implicitly_wait(30) 它可以在一个时间范围内智能的等待。而slepp(2)是一个固定的时间。 文档解释 selenium.webdriver.remote.webdriver.implicitly_wait(time_to_wait) 隐式地等待一个无素被发现或一个命令完成这个方法每次会话只需要调用一次 time_to_wait: 等待时间 用法:driver.implicitly_wait(30) 转载于:https://www.cnblogs.com/kongzhongqijing/p/3534197.html