iframe切换,xpath函数

了解iframe

iframe是一种html封装,内嵌页面,方便相同功能的网页复用代码,可以一定程度上减少开发量

所以在测试一个大型web项目的时候,包含iframe标签就不稀奇,但是在切换frame之前去定位,操作frame中的元素都是无法实现的。

 

切换frame的方式

通过iframe的名字

driver.switch_to.frame('login_frame') driver.
find_element_by_xpath("//a[text()='帐号密码登录']").click()

 

通过索引去切换iframe标签

time.sleep(2)
driver.switch_to.frame(0)

driver.find_element_by_xpath('//div[@id="wxLoginTab"]').click()
driver.find_element_by_xpath('//p[@id="auto_login"]/a').click()

通过element节点去进行切换

ele_iframe = driver.find_element_by_xpath('//iframe[@id="login_frame"]')
driver.switch_to.frame(ele_iframe)
driver.find_element_by_xpath("//a[text()='帐号密码登录']").click()

xpath定位

逻辑运算

and

//a[@class='nav-block' and @title='京东' and @target='_blank']

 

or

//span[text()='推荐' or text()='导航']

 

xpath函数

text() 获取节点的文本内容
contains(parm1,param2)  判断param1中是否函授param2
starts-with(参数1,参数2):判断参数1是否以参数2开头
# 匹配value属性包含 ‘addicated’ 的标签
// input[contains(@value,'addicated')]
# 匹配title属性包含 易购的 a 标签
//a[contains(@title,易购')]
# 匹配文本内容是 五一假期开头的a标签
//a[starts-with(text(),'五一假期')]

 

 

切片---后续需要更新

轴定位

定位某个节点/轴名称 ::节点

 

定位 id = form 的 form节点中,子元素中name=issp的input标签

//form[@id='form']/child::input[@name='issp']

 

定位id = form的form节点中, 祖先元素中 id =“wrapper”的div标签

//form[@id='form']/ancestor::div[@id='wrapper']

 

三大等待

1,强制等待 time.sleep()

2,隐式等待 driver.implicitly_wait(30)

driver.implicitly_wait

3,显示等待

WebDriverWait(driver,30,0.2)

wait.until

posted @ 2020-06-26 11:57  呓语落花  阅读(1333)  评论(0编辑  收藏  举报