• 定位
  • 查找方法
  • Ruby selenium part6 定位与查找方法

    定位

    定位有多种方式,id,class,css,xpath等。

    id

    cheese = driver.find_element(id: 'cheese')
    # 链式查找 
    cheese = driver.find_element(id: 'cheese')
    cheddar = cheese.find_element(id: 'cheddar')
    

    css

    driver.find_element(css: '#cheese #cheddar')
    

    多个元素

    <ol id=cheese>
     <li id=cheddar><li id=brie><li id=rochefort><li id=camembert></ul>
    
    mucho_cheese = driver.find_elements(css: '#cheese li')
    

    相对定位

    相对定位,selenium4可用

    #above() 元素上
    password_field= driver.find_element(:id, "password")
    email_address_field = driver.find_element(relative: {tag_name: 'input', above:password_field})
    
    below() 元素下
    email_address_field= driver.find_element(:id, "email")
    password_field = driver.find_element(relative: {tag_name: 'input', below: email_address_field})
    
    #toLeftOf() 元素左
    submit_button= driver.find_element(:id, "submit")
    cancel_button = driver.find_element(relative: {tag_name: 'button', left:submit_button})
    
    #toRightOf() 元素右
    cancel_button = driver.find_element(:id, "cancel")
    submit_button = driver.find_element(relative: {tag_name: 'button', right:cancel_button})
    
    #near() 附近
    email_address_label = driver.find_element(:id, "lbl-email")
    email_address_field = driver.find_element(relative: {tag_name: 'input', near: email_address_label})
    

    查找方法

    find_element

    此方法用于查找元素并返回第一个匹配的单个WebElement引用, 该元素可用于进一步的元素操作

    require 'selenium-webdriver'
    driver = Selenium::WebDriver.for :firefox
    begin
      # Navigate to URL
      driver.get 'https://google.com'
    
      # Get search box element from webElement 'q' using Find Element
      search_bar = driver.find_element(name: 'q')
    
      # Perform action using WebElement
      search_bar.send_keys 'Webdriver'
    ensure
      driver.quit
    end
    

    Find Elements

    与"Find Element"相似, 但返回的是匹配WebElement列表. 要使用列表中的特定WebElement, 您需要遍历元素列表以对选定元素执行操作.

    require 'selenium-webdriver'
    driver = Selenium::WebDriver.for :firefox
    begin
      # Navigate to URL
      driver.get 'https://www.example.com'
    
      # Get all the elements available with tag name 'p'
      elements = driver.find_elements(:tag_name,'p')
    
      elements.each { |e|
        puts e.text
      }
    ensure
      driver.quit
    end
    

    Find Element From Element

    此方法用于在父元素的上下文中查找子元素. 为此, 父WebElement与"findElement"链接并访问子元素.

    require 'selenium-webdriver'
    driver = Selenium::WebDriver.for :firefox
    begin
      # Navigate to URL
      driver.get 'https://google.com'
    
      # Get and store DOM element '<form>'
      search_form = driver.find_element(name: 'f')
    
      # Get search box element from webElement 'form'
      search_bar = search_form.find_element(name: 'q')
    
      # Perform action using WebElement
      search_bar.send_keys 'Webdriver'
    ensure
      driver.quit
    end
    

    Find Elements From Element

    此方法用于在父元素的上下文中查找匹配子WebElement的列表. 为此, 父WebElement与"findElements"链接并访问子元素

     require 'selenium-webdriver'
      driver = Selenium::WebDriver.for :chrome
      begin
        # Navigate to URL
        driver.get 'https://www.example.com'
    
        # Get element with tag name 'div'
        element = driver.find_element(:tag_name,'div')
    
        # Get all the elements available with tag name 'p'
        elements = element.find_elements(:tag_name,'p')
    
        elements.each { |e|
          puts e.text
        }
      ensure
        driver.quit
      end
    

    Get Active Element

    此方法用于追溯或查找当前页面上下文中具有焦点的DOM元素.

      require 'selenium-webdriver'
      driver = Selenium::WebDriver.for :chrome
      begin
        driver.get 'https://www.google.com'
        driver.find_element(css: '[name="q"]').send_keys('webElement')
    
        # Get attribute of current active element
        attr = driver.switch_to.active_element.attribute('title')
        puts attr
      ensure
        driver.quit
      end
    

    上一篇:Ruby selenium part5 frame

    下一篇:Ruby selenium part7 键盘事件