zoukankan      html  css  js  c++  java
  • xpath 语法&元素交互操作&选项卡操作

    Xpath语法

    //body/.    表示从body当前位置查找

    from selenium import  webdriver
    driver = webdriver.Chrome()
    
    try:
        #隐式等待,下载get请求之前,而显式请求写在get请求后:wait.until(....)
        driver.implicitly_wait(10)
        driver.get('https://doc.scrapy.org/en/latest/_static/selectors-sample1.html')
       
    
        #根据xpath语法查找元素
        #从根开始找,第一个 用/
        html =driver.find_element_by_xpath('/html')
    
        print(html.tag_name)
    
        #从根节点开始找,任意一个元素,用//
    
        head =driver.find_element_by_xpath('//head')
        print(head.tag_name)
    
    
        div = driver.find_element_by_xpath('//div')
        print(div.tag_name)
    
        # #查找id为images的div节点
        # div1 = driver.find_element_by_xpath('//div[@id="images"]')
        # print(div1.tag_name)
        # print(div1.text)
    
        #找到第一个a节点
        a = driver.find_element_by_xpath('//a')
        print(a.tag_name)
        #找到所有a节点
        a_s = driver.find_elements_by_xpath('//a')
        print(a_s)
    
        #找到第一个a节点的href属性
        # a1 = driver.find_element_by_xpath('//a/href')
        #
        # print(a1.tag_name)
        # #get_attribute:获取节点中的某个属性
        a2 = driver.find_element_by_xpath('//a').get_attribute('href')
        print(a2)
    finally:
        driver.close()
    

    2.

    元素交互操作

    from selenium import  webdriver
    from selenium.webdriver.common.keys import Keys #键盘按键操作
    import time
    
    driver = webdriver.Chrome()
    
    driver.maximize_window()
    
    try:
        driver.implicitly_wait(10)
        driver.get('https://www.jd.com')
    
        image_tag = driver.find_element_by_id('key')
        image_tag.send_keys('围城')
        image_tag.send_keys(Keys.ENTER)
        time.sleep(2)
    
        image_tag = driver.find_element_by_id('key')
        image_tag.clear()
        image_tag.send_keys('墨菲定律')
        image_tag.send_keys(Keys.ENTER)
        button = driver.find_element_by_class_name('button')
        button.click()
        time.sleep(2)
    
    finally:
        driver.close()
    

    3.添加cookie

    添加cookie
    """
    driver = webdriver.Chrome()
    
    driver.maximize_window()
    
    try:
        driver.implicitly_wait(10)
        driver.get('https://www.zhihu.com/explore')
    
       #driver.add_cookie({'name':'tank','pwd':'123'})    #这个不行,应该和网页里的cookie一致
        driver.add_cookie({'Name': 'tank', 'Value': '123'})
    
        driver.get_cookies()

    #若上面的报错,可以先用print(driver.get_cookies())代替上两句,测试获取当前网站的cookie
    time.sleep(2) finally: driver.close()

      4.选项卡的操作

    #选项卡管理:切换选项卡,有js的方式windows.open,有windows快捷键:ctrl+t等,最通用的就是js的方式
    import time
    from selenium import webdriver
    
    browser=webdriver.Chrome()
    browser.get('https://www.baidu.com')

    ##browser.execute_script('(alert('tank'))')  ##此处为执行javascrpit代码,弹窗操作
    browser.execute_script('window.open()') ##此处为执行javascrpit代码,新建浏览器窗口
    print(browser.window_handles) #获取所有的选项卡 ##browser.switch_to_window(browser.window_handles[1]) #选择第二个窗口,但是是旧方法
    browser.switch_to.window(browser.window_handles[1]) #选择第二个窗口,是新方法
    browser.get('https://www.taobao.com')   #第二个窗口往淘宝发送请求
    time.sleep(10)
    ##browser.switch_to_window(browser.window_handles[0]) #切换到第一个窗口,但是是旧方法
    browser.switch_to.window(browser.window_handles[0])   #切换到第一个窗口,是新方法

    browser.get('https://www.sina.com.cn')
    browser.close()

      

     

  • 相关阅读:
    HTTP Header 详解
    面试题----网页/应用访问慢突然变慢,如何定位问题
    PHP实现斐波那契数列
    常见的HTTP返回状态值
    通过实例理解单列索引、多列索引以及最左前缀原则
    Btree索引和Hash索引
    遍历和删除文件夹
    面试题之----禁掉cookie的session使用方案
    面试题之----写个函数来解决多线程同时读写一个文件的问题
    heredoc
  • 原文地址:https://www.cnblogs.com/evan0925/p/11043526.html
Copyright © 2011-2022 走看看