• 一、八种元素定位方法


    <!--百度首页输入框的HTML代码-->
    <input id="kw" class="s_ipt" autocomplete="off" maxlength="255" value="" name="wd">
    

    1. id定位

    通过find_element_by_id()来进行定位

    import time
    from selenium import webdriver
    
    driver = webdriver.Firefox()
    driver.maximize_window()
    driver.implicitly_wait(30)
    
    driver.get('https://www.baidu.com/')
    time.sleep(2)
    # 通过id定位到百度搜索框
    driver.find_element_by_id("kw").send_keys("selenium")
    time.sleep(2)
    driver.find_element_by_id("kw").clear()
    
    driver.quit()
    

    2. name定位

    通过find_element_by_name()来进行定位

    import time
    from selenium import webdriver
    
    driver = webdriver.Firefox()
    driver.maximize_window()
    driver.implicitly_wait(30)
    
    time.sleep(2)
    # 通过name定位百度搜索框
    driver.find_element_by_name("wd").send_keys("自动化")
    time.sleep(2)
    driver.find_element_by_name("wd").clear()
    
    driver.quit()
    

    3. class_name定位

    通过find_element_by_class_name()来进行定位

    import time
    from selenium import webdriver
    
    driver = webdriver.Firefox()
    driver.maximize_window()
    driver.implicitly_wait(30)
    
    time.sleep(2)
    # 通过class_name定位百度搜索框
    driver.find_element_by_class_name("s_ipt").send_keys("测试")
    time.sleep(2)
    driver.find_element_by_class_name("s_ipt").clear()
    
    
    driver.quit()
    

    4. tag_name定位

    通过find_element_by_tag_name()来进行定位

    import time
    from selenium import webdriver
    
    driver = webdriver.Firefox()
    driver.maximize_window()
    driver.implicitly_wait(30)
    
    time.sleep(2)
    # 通过tag_name定位百度搜索框, elements表示找到符合条件的所有元素,并存在一个列表中
    ele = driver.find_elements_by_tag_name("input")
    # 从定位到的标签名为"input"的元素中找到百度搜索框对应的元素
    for i in ele:
        if i.get_attribute('id') == "kw":
            i.send_keys("学习")
            time.sleep(2)
            i.clear()
    
    driver.quit()
    

    通过find_element_by_link_text()来进行定位,可以定位页面中的超链接元素

    import time
    from selenium import webdriver
    
    driver = webdriver.Firefox()
    driver.maximize_window()
    driver.implicitly_wait(30)
    
    time.sleep(2)
    # 通过link_text定位贴吧
    driver.find_element_by_link_text("贴吧").click()
    time.sleep(2)
    
    driver.quit()
    

    通过find_element_by_partial_link_text()来进行定位,可以定位页面中的超链接元素,模糊定位

    import time
    from selenium import webdriver
    
    driver = webdriver.Firefox()
    driver.maximize_window()
    driver.implicitly_wait(30)
    
    time.sleep(2)
    # 通过partial_link_text定位百度首页
    driver.find_element_by_partial_link_text("首页").click()
    time.sleep(2)
    
    driver.quit()
    

    7. xpath定位

    通过find_element_by_xpath()来进行定位

    import time
    from selenium import webdriver
    
    driver = webdriver.Firefox()
    driver.maximize_window()
    driver.implicitly_wait(30)
    
    time.sleep(2)
    # 通过xpath的绝对路径定位百度搜索框
    driver.find_element_by_xpath("/html/body/div[1]/div[1]/div/div[1]/div/form/span[1]/input").send_keys("绝对路径")
    time.sleep(2)
    driver.find_element_by_xpath("s_ipt").clear()
    
    time.sleep(2)
    # 通过xpath的相对路径定位百度搜索框
    driver.find_element_by_xpath("//*[@id='kw']").send_keys("相对路径")
    time.sleep(2)
    driver.find_element_by_xpath("s_ipt").clear()
    
    time.sleep(2)
    # 通过xpath的相对路径的模糊定位定位百度搜索框
    driver.find_element_by_xpath("//*[contains(@class, 'ipt']").send_keys("相对路径_模糊定位")
    time.sleep(2)
    driver.find_element_by_xpath("s_ipt").clear()
    
    driver.quit()
    

    8. css_selector定位

    通过find_element_by_css_selector()来进行定位

    import time
    from selenium import webdriver
    
    driver = webdriver.Firefox()
    driver.maximize_window()
    driver.implicitly_wait(30)
    
    driver.get("https://www.baidu.com")
    
    time.sleep(2)
    # 通过css_selector的class定位百度搜索框
    driver.find_element_by_css_selector(".s_ipt").send_keys("css")
    time.sleep(2)
    driver.find_element_by_css_selector(".s_ipt").clear()
    
    time.sleep(2)
    # 通过css_selector的id定位百度搜索框
    driver.find_element_by_css_selector("#kw").send_keys("selector")
    time.sleep(2)
    driver.find_element_by_css_selector("#kw").clear()
    
    time.sleep(2)
    # 通过css_selector的属性定位百度搜索框
    driver.find_element_by_css_selector("[name='wd']").send_keys("属性")
    time.sleep(2)
    driver.find_element_by_css_selector("[name='wd']").clear()
    
    time.sleep(2)
    # 通过css_selector的层级定位百度搜索框
    driver.find_element_by_css_selector("span > input").send_keys("层级")
    time.sleep(2)
    driver.find_element_by_css_selector("span > input").clear()
    
    driver.quit()
    

    注意:使用element定位到的都是单个元素;而使用elements定位到的是多个元素,存放在一个列表中。

    # 对应的八种查找多个元素的方法:
    find_elements_by_id
    find_elements_by_name
    find_elements_by_class_name
    find_elements_by_tag_name
    find_elements_by_link_text
    find_elements_by_partial_link_text
    find_elements_by_xpath
    find_elements_by_css_selector
    

    9. By类定位方法

    '''
    通过导入By类,from selenium.webdriver.common.by import By
    可以用find_element(by=By.ID, value=None)代表find_element_by...方法
    可以用find_elements(by=By.ID, value=None)代表find_elements_by...方法
    '''
    from selenium.webdriver.common.by import By
    By.ID
    By.NAME
    By.CLASS_NAME
    By.TAG_NAME
    By.LINK_TEXT
    By.PARTIAL_LINK_TEXT
    By.XPATH
    By.CSS_SELECTOR
    
  • 相关阅读:
    Windows 2008 server + IIS 7 设置身份模拟(ASP.NET impersonation)
    记录windows操作系统启动日志
    C# 重启计算机的问题
    AcWing 1086 恨7不是妻
    AcWing 1084. 数字游戏 II
    AcWing 1083. Windy数
    golang学习笔记 生成JSON及解析JSON 清明
    WEB前端底层知识之浏览器是如何工作的(2)渲染引擎
    ASP.NET MVC Razor 输出没有编码的HTML字符串
    ext.grid的配置属性和方法
  • 原文地址:https://www.cnblogs.com/aaron-zhou/p/12153083.html
Copyright © 2020-2023  润新知