登录qq邮箱无法定位到“写信”这个元素
测试环境: Firefox 48.0.2 + selenium3.3.1+python3.6.1# coding=utf-8
from selenium import webdriver
import time
driver=webdriver.Firefox()
driver.get("https://mail.qq.com/")
driver.switch_to.frame("login_frame")
driver.find_element_by_id("switcher_plogin").click()
driver.find_element_by_id("u").clear()
driver.find_element_by_id("u").send_keys("807673920")
driver.find_element_by_id("p").clear()
driver.find_element_by_id("p").send_keys("password")
driver.find_element_by_id("login_button").click()
#time.sleep(3)
# driver.switch_to.frame("actionFrame")
driver.find_element_by_id("composebtn").click()
运行到最后一行就提示找不到composebtn这个元素,考虑到有可能是表单切换,我用最笨的方法把所有iframe 的id都找出来(osslog_iframe,mainFrame,leftFrame,actionFrame),试着切换到这几个frame还是提示找不到元素,同时提示找不到frame.
selenium.common.exceptions.NoSuchElementException: Message: Unable to locate element:
selenium.common.exceptions.NoSuchFrameException: Message: actionFrame
怕登录之后load时间不够长,我设置了等待时间,还是提示找不到元素 :
selenium.common.exceptions.NoSuchElementException: Message: Unable to locate element:
During handling of the above exception, another exception occurred:
selenium.common.exceptions.WebDriverException: Message: can't access dead object
有没有大神帮忙看看到底是什么问题呢,不胜感激!!!
你自动化里有选择页面那个代码吗?你跳转页面了,需要切换页面在定位啊 使用xpath一层层的来定位,从顶部元素一层层的找下来就行
driver.find_element_by_xpath("/div[@id='resize']/div/div/ul/li/input").click() 周京城 发表于 2017-5-12 15:51
你自动化里有选择页面那个代码吗?你跳转页面了,需要切换页面在定位啊
页面跳转了但是是同一个窗口,我用all_handles=driver.window_handles 查看窗口句柄一直只有一个并且是同一个。所以应该不需要切换从窗口吧。 我觉得你报错的原因是在于composebtn元素不在login_frame下面,导致报错,所以当你切换页面后,需要先跳出login_frame,你可以在driver.find_element_by_id("login_button").click()后面加上driver.switch_to_default_content() 掉渣饼 发表于 2017-5-15 09:28
我觉得你报错的原因是在于composebtn元素不在login_frame下面,导致报错,所以当你切换页面后,需要先跳出l ...
你的思路太正确了,我试了下,只要跳出了原来的frame就能找到元素了。以后switch frame 之后一定要记得退出。谢谢谢~~~ 建议了解pyswat框架,全程录制案例,不需要手写代码,自动生成测试case,回放即可实现自动化测试
页:
[1]