天天看点

python+selenium中遇到的难题及解决方法

1.在一个页面中,无法定位到元素,切换frame也无法定位到,经过排查,发现是由于存在两个相同名称、id的frame

解决方法:

driver.find_elements_by_name("frame1") 查找所有名称为frame1的框架      
driver.switch_to.frame(frame1[1])  通过index来定位frame      
例如:现页面中存在两个id与name都相同的frame,通过find_elements_by_name("frame1")将两个frame1都筛选出来,分别为index 0 index 1,      
当前要定位的frame为index 1,则通过switch_to.frame(frame[1])来切换到要定位的frame,就可以成功定位到frame中的元素了。      
2.判断登录是否成功,登录成功后判断元素是否存在      
解决方法:flag默认值为true,定位对应元素,返回flag,如无法定位,返回false      
def isElementExist(element):
    flag = True
    try:
        driver.find_element_by_class_name(element)
        return flag
    except:
        flag = False
        return flag      
3.测试登录页面,需要重复测试输入错误的用户名及密码,第二次执行时,提示:stale element reference: element is not attached to the page document      
以上提示是由于页面刷新后,需要重新定位元素      
解决方法:将元素定位写在函数中,在每次执行用例之前调用一次元素定位函数      
python+selenium中遇到的难题及解决方法