Sleep方案的弊病
固定的等待时间,导致测试用例执行时间很长
为什么click函数不像get函数等待页面刷新?
click未必会导致页面更新。 get一定会导致页面更新
Selenium的解决方案
选择一个元素的时候
代码设定一个最大等待时长
周期性(每隔半秒钟)重新寻找该元素,直到该元素被找到(返回)或者超出指定最大等待时长(返回空列表或者抛出异常)
隐式等待
全局的设定,后面所有的选择元素的代码都不需要单独的指定周期性等待
driver.implicitly_wiat(10)
显式等待
为一个操作专门指定等待时间
frame的处理
什么是frame和iframe:
请参考--http://www.w3school.com.cn/html/html frames.asp
切换到frame里面:
driver.switch_to.frame(fram_reference)
frame元素的name属性或ID属性
索引值(从0开始):0
frame所对应的WebElement:driver.find_element_by_tag_name("iframe")
切换回主HTML里面:
driver.switch_to.default_content()
注意那些会变的ID
CSS选择器
选择元素的方法 tag/id/class
根据tag名
p{color: red;}
根据ID
#food{color: red;}
根据class
.vegetable{color: red;}
根据tag名和class组合写(如果多个)
span.vegetable{color: red;}
driver.find_elements_by_css_selector()