Selenium3(三)

Selenium特殊情况处理:

//例子网站:
http://www.runoob.com/try/try.php?filename=tryjs_alert

    1)iframe内联框架

      ① switch_to.frame(可以是iframe的id也可以用使用八大定位)

      ② switch_to_frame(已经不使用了)

    def alert(self):
        driver = webdriver.Chrome()
        driver.get('http://www.runoob.com/try/try.php?filename=tryjs_alert')
        driver.switch_to.frame('iframeResult')
        driver.find_element_by_css_selector('body > input[type="button"]').click()
        time.sleep(5)
        driver.close()

    2)使用iframe后进入的iframe标签里面,对iframe标签外进行操作的时候需要跳出iframe

    def alert(self):
        driver = webdriver.Chrome()
        driver.get('http://www.runoob.com/try/try.php?filename=tryjs_alert')
        driver.switch_to.frame('iframeResult')
        # driver.find_element_by_css_selector('body > input[type="button"]').click()
        driver.switch_to.default_content()
        # driver.find_element_by_css_selector('body > nav > div > div > h1').click()
        driver.find_element_by_xpath('/html/body/nav/div/div/h1').click()
        time.sleep(5)
        driver.close()

    3)多重嵌套iframe,需要多次跳转,default_content()是直接返回主文档,而parent_frame()是返回上一级

    4)switch_to.alert

      ① accept----点击确认按钮

      ② dismiss----点击取消按钮

      ③ send_keys------输入内容

    def alert(self):
        driver = webdriver.Chrome()
        driver.get('http://www.runoob.com/try/try.php?filename=tryjs_alert')
        driver.switch_to.frame('iframeResult')
        driver.find_element_by_css_selector('body > input[type="button"]').click()
        driver.switch_to.alert.accept()
        time.sleep(5)
        driver.close()

    5)自定义弹窗:

例子网站:
http://www.xiucai.com/

      ① document.getElementsByClassName('new-register')[0].style.display='none' 

def xiucai(self):
driver=webdriver.Chrome()
driver.get('http://www.xiucai.com/')
time.sleep(20)
js="document.getElementsByClassName('new-register')[0].style.display='none'"
js2="document.getElementsByClassName('overlay1')[0].style.display='none'"
driver.execute_script(js)
driver.execute_script(js2)
time.sleep(5)
driver.close()

Selenium窗口切换(多窗口):

    1)获取句柄:

      ①:获取所有句柄: driver.window_handles

      ②:获取当前句柄: driver.current_window_handle

   def win(self):
        driver = webdriver.Chrome()
        driver.get('http://home.baidu.com/')
        #获取当前句柄
        handle_baidu=driver.current_window_handle
        print(handle_baidu)
        driver.find_element_by_css_selector('#indexAdmin > div.main > div.main-body > div.full-section.news-section > div > div > div > div:nth-child(1) > a > div > div > div > img').click()

       ③跳转窗口: driver.switch_to.window()

Selenium强制等待:

    强制等待:

    def time_sleep(self):
        time.sleep(5)

    隐式等待(最长等待30秒):

    def time_sleep(self):
        driver=webdriver.Chrome()
        driver.implicitly_wait(30)

    显示等待(配合until来使用,超时之后会报异常): from selenium.webdriver.support.wait import WebDriverWait

from  selenium.webdriver.support.wait import WebDriverWait
#判断
from selenium.webdriver.support import  expected_conditions as  EC
from selenium.webdriver.common.by import By
    def time_sleep(self):
        driver=webdriver.Chrome()
        driver.get('https://github.com')
        locator=By.ID,'user[login]'
    WebDriverWait(driver,30,0.5).until(EC.presence_of_all_elements_located(locator))
        driver.find_element_by_id("user[login]").send_keys("123456")

文章链接地址:http://mumuling.com/?p=85

猜你喜欢

转载自www.cnblogs.com/cpxjl/p/9156636.html