selenium webdriver(python篇)(六)-----iframe的处理

上一篇 / 下一篇  2012-11-06 08:00:34 / 个人分类:webdriver

有时候我们在定位一个页面元素的时候发现一直定位不了,反复检查自己写的定位器没有任何问题,代码也没有任何问题。这时你就要看一下这个页面元素是否在一个iframe中,这可能就是找不到的原因之一。如果你在一个default content中查找一个在iframe中的元素,那肯定是找不到的。反之你在一个iframe中查找另一个iframe元素或default content中的元素,那必然也定位不到。

selenium webdriver中提供了进入一个iframe的方法:

WebDriver org.openqa.selenium.WebDriver.TargetLocator.frame(String nameOrId)

也提供了一个返回default content的方法:

WebDriver org.openqa.selenium.WebDriver.TargetLocator.defaultContent()

这样使我们面对iframe时可以轻松应对。

以下我以百度登录为例:

from selenium import webdriver

import unittest

class login(unittest.TestCase):

    def setUp(self):

        self.driver = webdriver.Firefox()

        self.driver.implicitly_wait(30)

        self.base_url = "http://www.baidu.com"

        self.verificationErrors = []

    

    def test_loginpass(self):

        driver = self.driver

        driver.get(self.base_url)

        driver.find_element_by_link_text("登录").click()#定位点击登陆

        driver.implicitly_wait(30)#做一个等待加载frame

        driver.switch_to_frame("login_iframe");#进入login的iframe框

        driver.find_element_by_id("pass_login_username_0").send_keys("name")

        driver.find_element_by_id("pass_login_password_0").send_keys("pwd")

        driver.find_element_by_id("pass_login_input_submit_0").click()

        

    def tearDown(self):

        #self.driver.quit()

        self.assertEqual([], self.verificationErrors)


if __name__ == "__main__":

    unittest.main()


TAG: Python python webdriver WebDriver iframe处理

 

评分:0

我来说两句

Open Toolbar