UI自动化测试-Select类的方法
Select类的方法
在UI的自动化测试实战中,如果遇到下拉框的选择,我们可以使用Select类里面的方法来具体进行定位和解决。如果想使用Select的类,首先需要导入它,导入的命令为:
from selenium.webdriver.support.select import Select
方法1:按照索引的方式定位
方法2:按照value的方式定位
方法3:按照文本的方式定位
首先,在桌面新建一个"index.html",内容如下:
1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>Title</title> 6 </head> 7 <body> 8 <center> 9 <select id="name" > 10 <option value="go">go语言</option> 11 <option value="python">python语言</option> 12 </select> 13 </center> 14 </body> 15 </html>
其次,用Chrome浏览器,打开此网页,并右击鼠标,点击检查,如下图所示:
在使用这些方法之前,我们梳理一下逻辑,用select定位时,首先要理清上述的逻辑。代码如下:
1 from selenium import webdriver #包:selenium,模块:webdriver 2 from selenium.webdriver.common.by import By 3 from selenium.webdriver.support.select import Select #导入Select包 4 import time as t 5 driver=webdriver.Chrome() 6 driver.maximize_window() 7 driver.get("file:///C:/Users/Administrator/Desktop/select.html") 8 9 #先进行实例化,先id,在进行select的选择 10 selectID=driver.find_element(By.ID,"name") 11 select=Select(selectID) #先让其定位到Select下 12 t.sleep(3) 13 14 #按照索引的方式 15 select.select_by_index(1) 16 17 #按照value的方式 18 select.select_by_value("python") 19 20 #按照文本的方式 21 select.select_by_visible_text("go语言") 22 t.sleep(3) 23 driver.quit()
方法4:不按常规的下拉框select
在实际的操作中,作为前端的开发人员,很少严格按照上述的代码格式去书写代码,我们以拉勾网和58同城的为例:
同理58同城也是如此:
因此,针对这种下拉框的选择,到底应该如何来进行定位和操作了,其实也是很简单的,它的步骤为:
- 先定位到“学历要求”或“帮助中心”后,然后点击。
- 然后再选择下拉框中需要选择的项,定位到后进行点击,就能够定位到了。
对于拉勾网,我们先在职位里输入:“测试开发工程师”,然后点击“搜索”,进入上图所示界面,我们选择“学历要求”下拉框下的“大专”。代码如下:
1 driver=webdriver.Chrome() 2 from selenium import webdriver #包:selenium,模块:webdriver 3 from selenium.webdriver.common.by import By 4 from selenium.webdriver.support.select import Select 5 import time as t 6 driver.maximize_window() 7 driver.get("https://www.lagou.com") 8 t.sleep(5) 9 driver.find_element(By.ID,"search_input").send_keys("测试开发工程师") 10 t.sleep(3) 11 driver.find_element(By.ID,"search_button").click() 12 t.sleep(3) 13 # 点击学历 14 driver.find_element(By.XPATH,'//*[@id="jobsContainer"]/div[2]/div[1]/div[1]/div[2]/div/ul/li[2]/div/span').click() 15 t.sleep(3) 16 # 大专 17 driver.find_element(By.XPATH,'//*[@id="jobsContainer"]/div[2]/div[1]/div[1]/div[2]/div/ul/li[2]/div/div/ul[2]/li[1]/span').click() 18 t.sleep(3) 19 driver.quit()
对于58同程网,我们先在搜索框里输入:“租房子”,然后点击“搜房源”,进入上图所示界面,我们选择“帮助中心”下拉框下的“客户帮助”。代码如下:
1 from selenium import webdriver #包:selenium,模块:webdriver 2 from selenium.webdriver.common.by import By 3 from selenium.webdriver.support.select import Select 4 import time as t 5 driver=webdriver.Chrome() 6 driver.maximize_window() 7 driver.get("https://xa.58.com/") 8 t.sleep(3) 9 # 输入租房子 10 driver.find_element(By.ID,"keyword").send_keys("租房子") 11 t.sleep(3) 12 # 按搜索框 13 driver.find_element(By.NAME,"button").click() 14 t.sleep(3) 15 #点击右上角帮助中心 16 driver.find_element(By.XPATH,'//*[@id="commonTopbar_help"]').click() 17 t.sleep(3) 18 #客户帮助 19 driver.find_element(By.XPATH,'//*[@id="commonTopbar_help"]/div/p[1]/a[1]').click() 20 t.sleep(3) 21 driver.quit()
注意:这里的“XPATH”可能会动态的发生变化,但不影响我们定位,只要重新进入网页进行复制即可。