• Web自动化Selenium-常见控件操作


    搜索框

    以百度搜索框为例,我们来看一下搜索框的元素属性。标签类型是

     ●输入文字:ele.send_keys('storm')。

    ●清除文字:ele.clear()。

    ●获取搜索框中的内容:ele.get_property('value')。

    控件中的值传给了value属性

    ●获取元素的属性:ele.get_attribute('name')。

    ●获取元素的tag name:ele.tag_name。

    1. from selenium import webdriver
    2. from time import sleep
    3. '''
    4. 搜索框常见操作
    5. '''
    6. driver = webdriver.Chrome()
    7. driver.get('https://www.baidu.com/')
    8. #定位百度搜索框
    9. ele = driver.find_element_by_id('kw')
    10. ele.send_keys('storm') # 通过send_keys方法输入内容
    11. sleep(2)
    12. ele.clear() # 通过clear方法清除搜索框中的内容
    13. sleep(2)
    14. ele.send_keys('storm') # 通过send_keys方法再次输入内容
    15. print(ele.get_property('value')) # 获取搜索框中的内容:get_property('value')
    16. print(ele.get_attribute('name')) # 获取元素的属性:get_attribute()
    17. print(ele.tag_name) # 获取元素的tag name:tag_name
    18. sleep(3)
    19. driver.quit()

    ●clear方法在处理有提示信息(placeholder这个属性)的搜索框的时候很有用,一般需要先使用clear,再使用send_keys

    按钮

    ◆元素属性

    我们来看一下按钮的元素属性,常见按钮有3种类型:button按钮、submit按钮、radio按钮。 

    button按钮

     

    1. from selenium import webdriver
    2. from time import sleep
    3. driver = webdriver.Chrome()
    4. driver.get("http://sahitest.com/demo/clicks.htm")
    5. driver.find_element_by_xpath("/html/body/form/input[3]").click()
    6. sleep(2)
    7. text = driver.find_element_by_name("t2").get_attribute('value')
    8. if text == '[CLICK]':
    9. print('pass')
    10. driver.quit()

     

    submit按钮

     

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

     

     radio按钮

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

    这三种按钮都是input标签,不一样的只是type。 

    1. from selenium import webdriver
    2. from time import sleep
    3. driver = webdriver.Chrome()
    4. driver.get("http://sahitest.com/demo/clicks.htm")
    5. ele = driver.find_element_by_xpath('/html/body/form/input[7]')#注意这种xpath写法很不好
    6. ele.click()
    7. sleep(2)
    8. if ele.is_selected():
    9. print('pass')
    10. sleep(3)
    11. driver.quit()

     button按钮不支持submit方法。

    复选框 

    ◆元素属性标签,type="checkbox"

     

     ●模拟单击选中复选框:ele.click()。

    ●模拟按空格键选中复选框:ele.send_keys(Keys.SPACE)。

    1. from selenium import webdriver
    2. from time import sleep
    3. from selenium.webdriver.common.keys import Keys
    4. driver = webdriver.Chrome()
    5. driver.get("http://sahitest.com/demo/clicks.htm")
    6. ele = driver.find_element_by_xpath('/html/body/ul//input')
    7. ele.click()
    8. sleep(2)
    9. if ele.is_selected():
    10. print('pass')
    11. sleep(2)
    12. ele.send_keys(Keys.SPACE) #自己可以手动实践一下,按空格键可以选中或取消选中复选框
    13. sleep(2)
    14. driver.quit()

     假如我们想将一组复选框全都选中,该如何操作呢?

    示例:

    1. "en">
    2. "UTF-8">
    3. CheckBox
    4. 下面是一组复选框:

    5. <input type="checkbox" name="a">

    6. <input type="checkbox" name="a">

    7. <input type="checkbox" name="a">

     

     

    1. from selenium import webdriver
    2. from time import sleep
    3. driver = webdriver.Chrome()
    4. driver.get('C:\\Users\\Desktop\\my_html.html')
    5. eles = driver.find_elements_by_name('a') # 通过name定位一组元素
    6. for ele in eles: # 循环读取每个复选框
    7. ele.click() # 单击
    8. sleep(2)
    9. driver.quit()

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

    链接

    链接是一个标签对,页面中显示的链接文字,就是中间的文字

     ●获取链接文字:ele.text。

    ●单击链接:ele.click()。

    select下拉列表

    下拉列表的tag name是“select”,而下拉列表的选项的tag name是“option”

     

    导包,可以用这两种方法任一个

    1. from selenium.webdriver.support.ui import Select
    2. from selenium.webdriver.support.select import Select

     ●实例化Select:Select(driver.find_element_by_id('s1Id'))。

    ●选择下拉选项:select类提供了3种选择某一选项的方法,分别是通过index选择下拉选项——select_by_index(index);通过value值选择下拉选项——select_by_value(value);通过可见text选择下拉选项——select_by_visible_text(text)。

    ●取消下拉选项:select类提供了4种方法取消原来的选择,分别是通过index取消下拉选项——deselect_by_index(index);通过value值取消下拉选项——deselect_by_value(value);通过可见text取消下拉选项——deselect_by_visible_text(text);全部取消选择——deselect_all()。

    ●返回选项:返回所有选项——options;返回第一个选中项——first_selected_option;返回所有选中项——all_selected_options。

    ●判断select选项是否可多选:is_multiple,返回一个布尔值。

    选择下拉值

    1. html>
    2. <html lang="en">
    3. <head>
    4. <meta charset="UTF-8">
    5. <title>select下拉列表title>
    6. head>
    7. <body>
    8. <select id="s1Id">
    9. <option>option>
    10. <option value="o1" id="id1">o1option>
    11. <option value="o2" id="id2">o2option>
    12. <option value="o3" id="id3">o3option>
    13. select>
    14. body>
    15. html>
    1. from selenium import webdriver
    2. from time import sleep
    3. from selenium.webdriver.support.ui import Select
    4. driver = webdriver.Chrome()
    5. driver.get('C:\\Users\\Desktop\\my_html.html')
    6. ele = driver.find_element_by_id('s1Id')
    7. # Select(ele).select_by_index(1)#通过 index定位
    8. Select(ele).select_by_value('o2')#通过value属性定位
    9. # Select(ele).select_by_visible_text('o3')
    10. sleep(3)
    11. driver.quit()

    ●value是

    ●visible_text是在标签对中间的值,是显示在下拉列表中的值

    取消选择

    1. html>
    2. <html lang="en">
    3. <head>
    4. <meta charset="UTF-8">
    5. <title>可以多选的select下拉列表title>
    6. head>
    7. <body>
    8. <select id="s1Id" multiple="multiple">
    9. <option>请选择:option>
    10. <option value="o1" id="id1">o1option>
    11. <option value="o2" id="id2">o2option>
    12. <option value="o3" id="id3">o3option>
    13. select>
    14. body>
    15. html>