51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 775|回复: 1
打印 上一主题 下一主题

[原创] Selenium-常见控件操作之Web自动化(上)

[复制链接]
  • TA的每日心情
    无聊
    4 天前
  • 签到天数: 1050 天

    连续签到: 1 天

    [LV.10]测试总司令

    跳转到指定楼层
    1#
    发表于 2022-12-21 16:16:47 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    搜索框
      以百度搜索框为例,我们来看一下搜索框的元素属性。标签类型是<input>

      ●输入文字:ele.send_keys('storm')。
      ●清除文字:ele.clear()。
      ●获取搜索框中的内容:ele.get_property('value'),控件中的值传给了value属性。
      ●获取元素的属性:ele.get_attribute('name')。
      ●获取元素的tag name:ele.tag_name。
      from [url=]selenium[/url] import webdriver
      from time import sleep

      '''
      搜索框常见操作
      '''
      driver = webdriver.Chrome()
      driver.get('https://www.baidu.com/')
      #定位百度搜索框
      ele = driver.find_element_by_id('kw')
      ele.send_keys('storm') # 通过send_keys方法输入内容
      sleep(2)
      ele.clear() # 通过clear方法清除搜索框中的内容
      sleep(2)
      ele.send_keys('storm') # 通过send_keys方法再次输入内容
      print(ele.get_property('value')) # 获取搜索框中的内容:get_property('value')
      print(ele.get_attribute('name')) # 获取元素的属性:get_attribute()
      print(ele.tag_name) # 获取元素的tag name:tag_name
      sleep(3)
      driver.quit()


      ●clear方法在处理有提示信息(placeholder这个属性)的搜索框的时候很有用,一般需要先使用clear,再使用send_keys
      按钮
      ◆元素属性
      我们来看一下按钮的元素属性,常见按钮有3种类型:button按钮、submit按钮、radio按钮。
      button按钮

      from selenium import webdriver
      from time import sleep

      driver = webdriver.Chrome()
      driver.get("http://sahitest.com/demo/clicks.htm")
      driver.find_element_by_xpath("/html/body/form/input[3]").click()
      sleep(2)
      text = driver.find_element_by_name("t2").get_attribute('value')
      if text == '[CLICK]':
            print('pass')
      driver.quit()


      submit按钮

      from time import sleep

      driver = webdriver.Chrome()
      driver.get('https://www.baidu.com/')
      driver.find_element_by_id('kw').send_keys('storm')
      driver.find_element_by_id('su').submit() # 对于submit按钮,可以使用submit方法
      sleep(2)
      driver.quit()


      radio按钮
      ●单击:click方法。●判断是否选中:is_selected方法。

      这三种按钮都是input标签,不一样的只是type。
      from selenium import webdriver
      from time import sleep

      driver = webdriver.Chrome()
      driver.get("http://sahitest.com/demo/clicks.htm")

      ele = driver.find_element_by_xpath('/html/body/form/input[7]')#注意这种xpath写法很不好
      ele.click()
      sleep(2)
      if ele.is_selected():
            print('pass')
      sleep(3)
      driver.quit()


      button按钮不支持submit方法。
      复选框
      ◆元素属性<input>标签,type="checkbox"

      ●模拟单击选中复选框:ele.click()。
      ●模拟按空格键选中复选框:ele.send_keys(Keys.SPACE)。
      from selenium import webdriver
      from time import sleep
      from selenium.webdriver.common.keys import Keys

      driver = webdriver.Chrome()
      driver.get("http://sahitest.com/demo/clicks.htm")
      ele = driver.find_element_by_xpath('/html/body/ul//input')
      ele.click()
      sleep(2)
      if ele.is_selected():
            print('pass')
      sleep(2)
      ele.send_keys(Keys.SPACE)  #自己可以手动实践一下,按空格键可以选中或取消选中复选框
      sleep(2)
      driver.quit()


      假如我们想将一组复选框全都选中,该如何操作呢?
      示例:
      <html lang="en">
      <head>
          <meta charset="UTF-8">
          <title>CheckBox</title>
      </head>
      <body>
      下面是一组复选框:
          <br>
          <input type="checkbox" name="a">
          <br>
          <input type="checkbox" name="a">
          <br>
          <input type="checkbox" name="a">
      </body>
      </html>



      from selenium import webdriver
      from time import sleep

      driver = webdriver.Chrome()
      driver.get('C:\\Users\\Desktop\\my_html.html')
      eles = driver.find_elements_by_name('a') # 通过name定位一组元素
      for ele in eles: # 循环读取每个复选框
            ele.click()  # 单击
            sleep(2)

      driver.quit()


      这组复选框都有一个相同的name属性值,因此,可以通过name来定位一组元素,并将其存成一个列表,然后循环读取并操作列表即可。

    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-11-25 04:38 , Processed in 0.064914 second(s), 22 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表