Selenium Webdriver API(9)

Selenium Webdriver API(9)

44、操作JavaScript的comfirm弹窗

#encoding=utf-8
import time
import unittest
from selenium import webdriver

class visitLocalConfirmByIe(unittest.TestCase):
    def setUp(self):
        #启动浏览器
        self.driver = webdriver.Ie(executable_path = "D:\IEDriverServer")
    def test_HandleConfirm(self):
        #导入异常类
        from selenium.common.exceptions import NoAlertPresentException
        url = "http://127.0.0.1:8080/test_confirm.html"
        #访问自定义网页
        self.driver.get(url)
        #通过id属性值找到页面上的按钮元素
        button = self.driver.find_element_by_id("button")
        #单击按钮元素,则会弹出一个confim提示框,上面显示“这是一个 confirm 弹出框”以及“确认”、“取消”按钮
        button.click()
        try:
            #使用driver.switch_to.alert方法来获取alert对象
            alert = self.driver.switch_to.alert
            time.sleep(2)
            #使用alert.text属性获取confirm框中的内容,关断言文字内容是否是“这是一个 confirm 弹出框”
            self.assertEqual(alert.text,u"这是一个 confirm 弹出框")
            #调用alert对象的accept()方法,模拟鼠标单击confirm弹窗上的“确认”按钮 ,以便关闭conform弹窗
            alert.accept()
            #取消下一行代码的注释,就会模拟单击confirm弹窗上的“取消”按钮
            # alert.dismiss()
        except NoAlertPresentException,e:
            #如果confirm框未弹出显示在页面上,则会抛出NoAlertPresentException异常
            self.fail(u"尝试操作的confirm框未被找到")
            print e

    def tearDown(self):
        self.driver.quit()

if __name__  == "__main__":
    unittest.main()

45、操作JavaScript的prompt弹窗

#encoding=utf-8
import time
import unittest
from selenium import webdriver

class visitLocalPromptByIe(unittest.TestCase):
    def setUp(self):
        #启动浏览器
        self.driver = webdriver.Ie(executable_path = "D:\IEDriverServer")
    def test_HandlePrompt(self):
        url = "http://127.0.0.1:8080/test_prompt.html"
        #访问自定义网页
        self.driver.get(url)
        #使用id定位方式,找到页面上的按钮元素
        button = self.driver.find_element_by_id("button")
        #单击按钮
        button.click()
        time.sleep(2)
        #单击按钮元素后,弹出一介prompt提示框,上面将显示“这是一个 prompt 弹出框”、输入框、“确认”、“取消”
        #使用driver.switch_to.alert方法获取alert对象
        alert = self.driver.switch_to.alert
        #使用alert.text方法获取prompt框上面的文字,并断言文字内容 是否和“这是一个 prompt 弹出框”一致
        self.assertEqual(alert.text,u"这是一个 prompt 弹出框")
        time.sleep(1)
        #调用alert.send_keys()方法,在prompt窗体的输入框中输入“改变命运,从每天学习2小时开始”
        alert.send_keys(u"改变命运,从每天学习2小时开始")
        #使用alert对象的accept()方法点击“确定”按钮,关闭prompt框
        alert.accept()
        #也可使用alert对象的dismiss()方法点击“取消”按钮,关闭prompt框
        # alert.dismiss()

    def tearDown(self):
        self.driver.quit()

if __name__ == "__main__":
    unittest.main()

46、操作浏览器Cookie

#encoding=utf-8
import time
import unittest
from selenium import webdriver

class visitSogouByIe(unittest.TestCase):
    def setUp(self):
        #启动浏览器
        self.driver = webdriver.Ie(executable_path = "D:\IEDriverServer")
    def test_Cookie(self):
        url = "http://www.sogou.com"
        #访问搜狗首页
        self.driver.get(url)
        #得到当前页面下的所有Cookies,并输出他们所在域、name、value、有效期的路径
        cookies = self.driver.get_cookies()
        for cookie in cookies:
            print "%s -->%s --> %s --> %s --> %s" % (cookie["domain"],cookie["name"],cookie["value"],cookie["expiry"],cookie["path"])

        #根据Cookie的name值获取该条Cookie信息,获取 name值为“SUV”的Cookie信息
        ck = self.driver.get_cookie("SUV")
        print "%s-->%s--> %s --> %s --> %s" % (ck["domain"],ck["name"],ck["value"],ck["expiry"],ck["path"])

        #删除cookie有两种方法
        #第一种:通过cookie的name属性,删除name值为“ABTEST”的Cookie信息
        print self.driver.delete_cookie("ABTEST")

        #第二种:一次性删除全部Cookie信息
        self.driver.delete_all_cookies()
        #删除全部Cookie后,再次查看Cookies,确认是否已被全部删除
        cookies = self.driver.get_cookies()
        print cookies

        #添加自定义Cookie信息
        self.driver.add_cookie({"name":"WOW","value":"12345678900"})
        #查看添加的Cookie信息
        cookie  = self.driver.get_cookie("WOW")
        print cookie

    def tearDown(self):
        self.driver.quit()

if __name__ == "__main__":
    unittest.main()

练习:登录163邮箱

#encoding=utf-8
import time
import unittest
from selenium import webdriver
from selenium.common.exceptions import TimeoutException

class login163MailByIe(unittest.TestCase):
    def setUp(self):
        #启动浏览器
        self.driver = webdriver.Ie(executable_path = "D:\IEDriverServer")
    def test_login(self):
        url = "http://mail.163.com"
        #设置页面加载限制时间为4秒
        self.driver.set_page_load_timeout(10)
        #窗口最大化
        self.driver.maximize_window()
        try:
            stime = time.time()
            #访问163首页
            self.driver.get(url)
        except TimeoutException,e:
            print u"页面加载超过设定时间,超时"
            #当页面加载时间超过设定时间,通过执行javascript来停止加载,然后继续执行后续动作
            self.driver.execute_script("window.stop()")
        end = time.time() - stime
        print end
        #切换进iframe控件
        # 目前126和163登录的iframe的id也是动态变化,所以不能用id定位iframe
        #使用各种xpath定位表达式,在浏览器中可以成功定位,但Pycharm中一直报错(NoSuchElementException),只成功过执行一次
        iframe = self.driver.find_element_by_xpath('//iframe[contains(@id,"x-URS-iframe")]')
        self.driver.switch_to.frame(iframe)
        #获取用户名输入框
        userName = self.driver.find_element_by_xpath("//input[@name='email']")
        # userName.click()
        userName.clear()
        userName.send_keys("chenyongliang_2013")
        #获取密码输入框
        pwd = self.driver.find_element_by_xpath("//input[@name='password']")
        #输入密码
        pwd.send_keys("xxx")
        #点击登录按钮
        self.driver.find_element_by_id("dologin").click()
        time.sleep(5)
        #断言登录成功
        self.assertTrue(u"退出" in self.driver.page_source)
    def tearDown(self):
        self.driver.quit()

if __name__ == "__main__":
    unittest.main()
原文地址:https://www.cnblogs.com/test-chen/p/10551995.html