• webDriver自动化操作(一)元素定位和基础操作


    1、元素定位

    class webDriverChrome():
    def __init__(self):
    self.webDriver = webdriver.Chrome("D:Pythonchromedriver.exe")

    def webDriverTest(self):
    self.webDriver.get("https://tieba.baidu.com/")
    # self.webDriver.find_element_by_id("wd1").send_keys("通过id定位元素")
    # self.webDriver.find_element_by_name("kw1").send_keys("通过name定位元素")
    # self.webDriver.find_element_by_class_name("search_ipt.search_inp_border.j_search_input.tb_header_search_input").send_keys("通过Class定位元素")
    # self.webDriver.find_element_by_link_text("地图").click() #通过链接的名字找到元素,并进行click()点击操作
    # self.webDriver.find_element_by_partial_link_text("图").click() #通过链接的部分文字信息来定位到这个元素,若可以找到多个,定位第一个元素
    self.webDriver.find_element_by_xpath('//*[@id="wd1"]').send_keys("通过xpath定位")
    ''' 
    xpath是比较常用的定位,由于定位比较准确,一般是百发百中,但是缺点是绝对路径的xpath
    根据元素标签的相对位置来定位,如果页面的UI元素有所改动,结构路径变化的话,也会导致我们无法定位元素,
    不过这是针对我们用firepath自动获取时的定位,我们完全可以根据层级关系和元素属性自己来写xpath路径,
    这样的话,即使其他路径结构变化,对于xpath定位的准确度还有一定的保障
    比如:
    1.我们把xpath的父级路径添加上//form/input[@id='wd1']
    2.我们还可以对所查找元素标签里的属性进行组合//form/input[@id='wd1' and @name='kw1']
    3.我们对文本进行匹配driver.find_element_by_xpath("//*[contains(text(),'网页')]").click()
    可以通过标签的各种属性来定位,等于说是包含了class name、name、id、link_text这些定位的方法
    '''
    # css selector 定位
    '''
    用class来定位:driver.find_element_by_css_selector(".search_ipt")
    用id来定位:driver.find_element_by_css_selector("#wd1")
    用标签名来定位(tag name):driver.find_element_by_css_selector("input")
    用父子关系来定位:driver.find_element_by_css_selector("form>input")
    用标签和属性来定位:driver.find_element_by_css_selector("input[id='wd1']")
    '''
    if __name__ == '__main__':
    webDriver = webDriverChrome()
       webDriver.webDriverTest()

    2、元素和浏览器操作

    def webDriverOperate1(self):
    '''
    clear():清除输入框内的文本
    send_keys():输入特定的字符 (需要传参)
    click():点击元素
    submit():提交表单(一般这个方法可以替代click)
    :return:
    '''
    self.webDriver.get("https://tieba.baidu.com/")
    self.webDriver.find_element_by_xpath("//*[@id='wd1']").send_keys("文本框内输入信息")
    time.sleep(3) #休眠3秒便于查看操作
    self.webDriver.find_element_by_xpath("//*[@id='wd1']").clear() #清除文本框内信息
    # send_keys 文本框输入值:自动化测试
    self.webDriver.find_element_by_xpath("//*[@id='wd1']").send_keys("自动化测试")
    # click 点击进入贴吧按钮
    self.webDriver.find_element_by_xpath("//*[@id='tb_header_search_form']/span[1]/a").click()
    # submit 提交表单(效果等同于click点击)
    # driver.find_element_by_xpath("//*[@id='tb_header_search_form']/span[1]/a").submit()
    def webDriverOperate2(self):
    '''
    get()直接访问某个网址(传参输入网址)
    back() 返回上一个页面
    forward()进入下一个页面
    close()关闭当前标签页
    quit()关闭浏览器
    set_window_size() 设置浏览器大小(传参输入浏览器长、宽)
    maximize_window()  最大化浏览器
    refresh()  刷新页面
    '''
    self.webDriver.get("https://www.baidu.com/")
    # get() 进入百度页面
    time.sleep(3)
    # get() 进入贴吧页面
    self.webDriver.get("https://tieba.baidu.com/")
    time.sleep(2)
    # back() 返回上一页:百度页面
    self.webDriver.back()
    time.sleep(3)
    # forward() 返回下一页:贴吧页面
    self.webDriver.forward()
    time.sleep(3)
    # set_window_size() 设置浏览器大小
    self.webDriver.set_window_size(500,800)
    time.sleep(3)
    # minimize_window()最小化浏览器
    self.webDriver.minimize_window()
    time.sleep(3)
    # maximize_window() 最大化浏览器
    self.webDriver.maximize_window()
    # 点击title为娱乐明星的<a>标签元素
    self.webDriver.find_element_by_css_selector("a[title = '娱乐明星']").click()
    time.sleep(3)
    # 关闭当前页面
    self.webDriver.close()
    time.sleep(3)
    # 关闭浏览器
    self.webDriver.quit()
     
  • 相关阅读:
    highcharts 时间少8小时问题
    Spring声明式事务配置管理方法
    jetty简介
    java事务管理
    oracle表中某个字段含有字符回车、空格的手动修改方式
    java环境变量配置
    JAVA解析XML的四种方式
    JSON-lib框架,JAVA对象与JSON、XML之间的相互转换
    Java WebService简单实例
    HTTP协议报文、工作原理及Java中的HTTP通信技术详解
  • 原文地址:https://www.cnblogs.com/--cainiao/p/13219569.html
Copyright © 2020-2023  润新知