lsekfe 发表于 2022-12-21 16:16:47

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

搜索框
  以百度搜索框为例,我们来看一下搜索框的元素属性。标签类型是<input>
http://www.51testing.com/attachments/2022/12/15326880_202212191614321FYtQ.png
  ●输入文字:ele.send_keys('storm')。
  ●清除文字:ele.clear()。
  ●获取搜索框中的内容:ele.get_property('value'),控件中的值传给了value属性。
  ●获取元素的属性:ele.get_attribute('name')。
  ●获取元素的tag name:ele.tag_name。
  from selenium 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按钮
http://www.51testing.com/attachments/2022/12/15326880_202212191614381X6Yo.png
  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").click()
  sleep(2)
  text = driver.find_element_by_name("t2").get_attribute('value')
  if text == '':
        print('pass')
  driver.quit()


  submit按钮
http://www.51testing.com/attachments/2022/12/15326880_2022121916144114bEx.png
  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方法。
http://www.51testing.com/attachments/2022/12/15326880_202212191614441i0lW.png
  这三种按钮都是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')#注意这种xpath写法很不好
  ele.click()
  sleep(2)
  if ele.is_selected():
        print('pass')
  sleep(3)
  driver.quit()


  button按钮不支持submit方法。
  复选框
  ◆元素属性<input>标签,type="checkbox"
http://www.51testing.com/attachments/2022/12/15326880_202212191614471de4b.png
  ●模拟单击选中复选框: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>


http://www.51testing.com/attachments/2022/12/15326880_202212191614501WinR.png
  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来定位一组元素,并将其存成一个列表,然后循环读取并操作列表即可。

oliver.tang 发表于 2023-3-7 15:11:50

mark
页: [1]
查看完整版本: Selenium-常见控件操作之Web自动化(上)