• Python+Selenium 利用ID,XPath,tag name,link text,partial link text,class name,css,name定位元素


    使用firefox浏览器,查看页面元素,我们以“百度网页”为示例

    一、ID定位元素    利用find_element_by_id()方法来定位网页元素对象

          ①、定位百度首页,输入框的元素

    ②、编写示例代码信息如下:

    #coding=utf-8
    from selenium import webdriver
    
    driver=webdriver.Chrome() #打开chrome,如果没有安装chrome,换成firefox或ie浏览器
    driver.maximize_window()  #最大化浏览器窗口
    driver.implicitly_wait(8)  #设置隐式时间等待
    
    driver.get("https://www.baidu.com")  #进入百度网页
    #利用ID定位元素
    try:
        driver.find_element_by_id("kw")   #在①中可以查看定位到输入框的id为“kw”
        print('test pass : ID found')
    except Exception as e:
        print("Exception found",format(e))
    driver.quit()

    ③ 运行代码后,会打印出 “test pass : ID found”的成功信息

     

    二、Xpath定位元素  利用find_element_by_xpath()方法来定位网页元素对象,示例中,①我们先定位搜索输入框元素②在输入框输入selenium③再定位搜索按钮(百度一下)④在搜索结果中定位都selenium官网相关元素

           ①如下三个截图是分别定位的输入框元素、搜索按钮元素、搜索结果中selenium官网元素的xpath

                  

    ②编写示例代码信息如下:

    #coding=utf-8
    import time
    from selenium import webdriver
    
    driver=webdriver.Chrome() #打开chrome,如果没有安装chrome,换成firefox或ie浏览器
    driver.maximize_window()  #最大化浏览器窗口
    driver.implicitly_wait(8)  #设置隐式时间等待
    
    driver.get("https://www.baidu.com")  #进入百度网页
    
    #利用 xpath定位元素
    driver.find_element_by_xpath(".//*[@id='kw']").send_keys("selenium") #定位搜索输入框,并在输入框输入selenium搜索信息
    driver.find_element_by_xpath(".//*[@id='su']").click()  #定位“百度一下”的搜索按钮,并点击
    time.sleep(2)
    #第一种断言方法
    #这里通过元素xpath表达式来确定该元素显示在结果列表,从而判断Selenium官网这个连接显示在结果列表
    #这里采用了相对元素定位方法/.../
    #通过selenium方法is_displayed() 来判断我们的目标元素是否在页面显示
    driver.find_element_by_xpath(".//*[@id='1']/h3/a").is_displayed()
    #第二种判断方法
    ele_string=driver.find_element_by_xpath(".//*[@id='1']/h3/a").text
    if(ele_string==u"Selenium - Web Browser Automation"):
        print("测试成功,结果和预期结果匹配")
    driver.quit()

     ③上面代码运行后,会打印出“测试成功,结果和预期结果匹配”的成功信息

     

    三、tag name 定位元素  利用 find_element_by_tag_name() 方法 来定位页面元素

    ①定位百度搜索输入框的tag name,如下截图

    上面图片中红色圈选区域的标签名称都是tag name;实际上我们目标元素是输入框,应该是input这个tag name,在图中蓝色高亮区域。但是如果只是通过input这个tag name来定位,发现上面有很多input的选项。所以我们扩大节点的参照选择,我们选择上面这个form来作为我们tag name

    ②示例代码如下

     1 #coding=utf-8
     2  3 from selenium import webdriver
     4 
     5 driver=webdriver.Chrome() #打开chrome,如果没有安装chrome,换成firefox或ie浏览器
     6 driver.maximize_window()  #最大化浏览器窗口
     7 driver.implicitly_wait(8)  #设置隐式时间等待
     8 
     9 driver.get("https://www.baidu.com")  #进入百度网页
    10 
    11 #利用tag name定位元素
    12 driver.find_element_by_tag_name("form")
    13 print("test pass : tag name found")
    driver.quit()

    ③代码运行后,打印“test pass : tag name found” 成功提示

     

    四、link text 定位元素   利用find_element_by_link_text()方法 定位页面元素

    ①定位百度首页“新闻”这个文本字段来定义这个跳转链接元素

    ②示例代码如下:

     1 #coding=utf-8
     2  3 from selenium import webdriver
     4 
     5 driver=webdriver.Chrome() #打开chrome,如果没有安装chrome,换成firefox或ie浏览器
     6 driver.maximize_window()  #最大化浏览器窗口
     7 driver.implicitly_wait(8)  #设置隐式时间等待
     8 
     9 driver.get("https://www.baidu.com")  #进入百度网页
    10 
    11 #利用 link text定位元素
    12 driver.find_element_by_link_text("新闻")
    13 print("test pass ")
    14 driver.quit()

    运行代码成功,打印成功信息

    五、partial link text定位元素,partial link text和link text有点类似,区别就是选择这个元素的link text中一部分字段, 利用find_element_by_partial_link_text()方法定义页面元素

           ①以下面截图中被选中的信息做目标元素

    ②示例代码如下:

     1 #coding=utf-8
     2  3 from selenium import webdriver
     4 
     5 driver=webdriver.Chrome() #打开chrome,如果没有安装chrome,换成firefox或ie浏览器
     6 driver.maximize_window()  #最大化浏览器窗口
     7 driver.implicitly_wait(8)  #设置隐式时间等待
     8 
     9 driver.get("https://www.baidu.com")  #进入百度网页
    10 #利用partial link text 定位元素
    11 driver.find_element_by_partial_link_text("设为主页").click()
    12 print("test pass : Success")
    13 time.sleep(10) #停留时间,是为了查看点击进入的页面,是否成功    
    14 driver.quit()

    运行成功后,可以查看到进入的页面,和打印的成功信息

     

    六、class name定位元素  ,利用find_element_by_class_name()方法来定义页面元素

    ①定义百度首页输入框元素,查看class如下截图

    ②示例代码如下:

    #coding=utf-8
    from selenium import webdriver
    
    driver=webdriver.Chrome() #打开chrome,如果没有安装chrome,换成firefox或ie浏览器
    driver.maximize_window()  #最大化浏览器窗口
    driver.implicitly_wait(8)  #设置隐式时间等待
    
    driver.get("https://www.baidu.com")  #进入百度网页
    #利用class name定位元素
    driver.find_element_by_class_name("s_ipt")
    print("test pass :Success!!")
    driver.quit()

    运行代码后,打印成功信息

     

    七、CSS 定位元素   利用find_element_by_css() 方法

    示例代码如下:

     1 #coding=utf-8
     2 from selenium import webdriver
     3 
     4 driver=webdriver.Chrome() #打开chrome,如果没有安装chrome,换成firefox或ie浏览器
     5 driver.maximize_window()  #最大化浏览器窗口
     6 driver.implicitly_wait(8)  #设置隐式时间等待
     7 
     8 driver.get("https://www.baidu.com")  #进入百度网页
     9 driver.find_element_by_css_selector("#su") # 找 百度一下 这个按钮  
    10 print ('test pass')
    11   
    12 driver.quit()  

    八、name定位  ,利用find_element_by_name()方法

    ①定位百度输入框元素的name

    ②示例代码如下:

    #coding=utf-8
    from selenium import webdriver
    
    driver=webdriver.Chrome() #打开chrome,如果没有安装chrome,换成firefox或ie浏览器
    driver.maximize_window()  #最大化浏览器窗口
    driver.implicitly_wait(8)  #设置隐式时间等待
    
    driver.get("https://www.baidu.com")  #进入百度网页
    driver.find_element_by_name("wd")  # 这里百度搜索输入框有name = 'wd'这个节点信息  
    print ('test pass: element found by name value')  
    driver.quit()

    运行代码后,打印出成功信息 

  • 相关阅读:
    我看Slashdot
    三维地形建模工具(MultiGenParadigm公司)
    街头新景:数字公交站
    美国一公司开发出WiFi定位系统 比GPS更精确
    理想、激情、生存—— 一位技术管理人员的20年工作经历和感悟 (ZT)
    西安国际化 市场化 人文化 生态化发展报告
    Google Earth Plus
    Visual Studio 2003 “默认设置”快捷键
    Google免费开放地图大餐
    向Windows 2000道声珍重
  • 原文地址:https://www.cnblogs.com/baby0511/p/7883919.html
Copyright © 2020-2023  润新知