UI自动化之二(WebDriver浏览器属性详解、WebElement类方法实战)

(一)WebDriver浏览器属性详解(以百度为例)

1、获取测试地址

在测试中,由于实际的需求,我们需要获取被测试的地址,比如我说一个很具体的业务场景,验证用户登录一个系统成功后,怎么判断该用户是登录成功了呢?那么判断的依据可以分为两种来进行解答,一种是用户登录成功后显示的用户昵称,来获取它的文本信息,来验证昵称是否是自己期望的,另外一种方式是获取登录成功后的地址,然后使用endswith()的方法来验证是不是以XX地址为结尾作为判断的依据,当然endswith()的方法返回的结果是bool的数据类型,如果是希望的地址,返回的结果True,如果不是那么返回的结果就是False。下面就简单的验证下百度的首页地址信息,测试的案例代码如下:

 

from selenium import webdriver
from selenium.webdriver.common.by import  By
import time

 

driver=webdriver.Chrome()
driver.maximize_window()

driver.get('http://www.baidu.com')
time.sleep(1)

 

print(driver.current_url)

Driver.close()

 

2、获取当前页面的源代码

使用到的方法为page_source

from selenium import webdriver
from selenium.webdriver.common.by import  By
import time

 

driver=webdriver.Chrome()
driver.maximize_window()

driver.get('http://www.baidu.com')
time.sleep(1)

print(driver.page_source)

driver.close()

 

3、获取当前的Title

 获取浏览器的title其实很简单的,比如百度的title它就是“百度一下,你就知道”

from selenium import webdriver
from selenium.webdriver.common.by import  By
import time

 

driver=webdriver.Chrome()
driver.maximize_window()

driver.get('http://www.baidu.com')
time.sleep(1)

print(driver.title)

driver.close()

 

4、页面的前进和后退

页面的前进使用到的方法为forward(),后面的后退使用到的方法为back(),这主要应用于很多的业务场景,比如在第一次打开的是百度,后面由于测试的需求,打开的是bing搜索页面,那么可以回退回去,当然也可以再次前进到bing搜索的页面

from selenium import webdriver
from selenium.webdriver.common.by import  By
import time

 

driver=webdriver.Chrome()
driver.maximize_window()
driver.get('http://www.baidu.com')
time.sleep(1)
driver.get('http://www.bing.com')
time.sleep(1)

#回退
driver.back()
print(driver.current_url)
time.sleep(1)
#前进
driver.forward()
print(driver.current_url)
time.sleep(1)
driver.close()

5、多窗口的实战

以百度为例
(1)、先获取当前窗口句柄
(2)、然后点击链接,打开一个新的窗口句柄
(3)、然后获取到所有的窗口句柄

(4)、循环所有的窗口句柄,判断如果不是当前窗口句柄,那么就切换到新的窗口句柄(如果当前的,就只能是新的窗口了)
(5)、换到新的窗口后,进行操作完成后,然后关闭新的窗口,再切换到当前窗口句柄

from selenium import webdriver
from selenium.webdriver.common.by import  By
import time

 

driver=webdriver.Chrome()
driver.maximize_window()
driver.get('http://www.baidu.com')
time.sleep(1)
#获取当前窗口
nowHandler=driver.current_window_handle
driver.find_element(By.LINK_TEXT,'新闻').click()
time.sleep(2)
#获取所有的窗口
allHandlers=driver.window_handles
#对所有窗口进行循环和判断
for hander in allHandlers:
    #判断不是当前窗口
    if hander!=nowHandler:
        #切换到新的窗口
        driver.switch_to.window(hander)
        time.sleep(2)
        driver.find_element(By.ID,'ww').send_keys('百度新闻')
        time.sleep(2)
        driver.close()
#切换到当前的窗口
driver.switch_to.window(nowHandler)
time.sleep(2)
driver.find_element(By.ID,'kw').send_keys('我回来了')
time.sleep(2)
driver.close()

(二)WebElement类方法实战

1、clear()

clear()的方法是清空的意思,也就说在一个文本输入框里面输入关键字的信息后,调用该方法可以清空里面

from selenium import webdriver
from selenium.webdriver.common.by import  By
import time

driver=webdriver.Chrome()
driver.maximize_window()
driver.get('http://www.baidu.com')
time.sleep(1)
so=driver.find_element(By.ID,'kw')
so.send_keys('admin')
time.sleep(1)
#清理输入的值
so.clear()
time.sleep(2)

Driver.close()

2、get_attribute()

 get_attribute()的方法是获取元素属性的值,比如我们可以获取文本输入框里面的友好提示信息

from selenium import webdriver
from selenium.webdriver.common.by import  By
import time

 

driver=webdriver.Chrome()
driver.maximize_window()
driver.get('http://www.baidu.com')

print(so.get_attribute('value'))             
print(so.get_attribute('maxlength')) 

driver.close()

3、is_displayde()

比如在百度的首页“关于百度”是否可见,我们可以调用该方法

from selenium import webdriver
from selenium.webdriver.common.by import  By
import time

 

driver=webdriver.Chrome()
driver.maximize_window()
driver.get('http://www.baidu.com')
time.sleep(1)

#字体是否可见
obj=driver.find_element(By.LINK_TEXT,'关于百度')
print(obj.is_displayed())

driver.close()

 

4、is_enabled()

from selenium import webdriver
from selenium.webdriver.common.by import  By
import time

 

driver=webdriver.Chrome()
driver.maximize_window()
driver.get('http://www.baidu.com')
time.sleep(1)

# 查看输入框是否可编辑        
obj=driver.find_element(By.ID,'kw')
print(obj.is_enabled())

driver.close()

 

5、is_selected()

该方法返回的结果信息是是否可选中,使用的场景主要为在登录的案例中,一般记住登录都是默认选中的

 

from selenium import webdriver
from selenium.webdriver.common.by import  By
import time

 

#查看单选按钮是否被勾选  例如登陆时的自动登录是否勾选
driver=webdriver.Chrome()
driver.maximize_window()
driver.get('https://mail.sina.com.cn/')
time.sleep(1)
obj=driver.find_element(By.ID,'store1')
print(obj.is_selected())
time.sleep(3)
obj.click()
time.sleep(3)
print(obj.is_selected())
time.sleep(3)
driver.close()

默认是勾选的,那么思路就是,先验证是否是勾选状态,然后点击一个勾选项,再次验证是否勾选

 

6、下拉框选项定位

1)、首先对select进行实例化,这样可以调用里面的方法
2)、三种方式
       文本模式
       索引模式
       value模式

from selenium import webdriver
from selenium.webdriver.common.by import  By
import time

 

driver=webdriver.Chrome()
driver.maximize_window()
driver.get('file:///C:/Users/Administrator/Desktop/select(1).html')
time.sleep(1)
sel=driver.find_element(By.ID,'nr')
obj=Select(sel)
time.sleep(1)
#文本模式
obj.select_by_visible_text('Go语言')
#索引模式
obj.select_by_index(2)
#value模式
obj.select_by_value('Go')
time.sleep(2)
driver.close()

 

7、下拉框实战

场景:select不规范,点击下拉框无法进行相应的定位时(例如拉勾网,当我们选择学历后,点击大专并没有定位到大专的代码处,那么这个时候就需要使用到下面的方法)

from selenium import webdriver
from selenium.webdriver.common.by import  By
import time

 

driver=webdriver.Chrome()
driver.maximize_window()
driver.get('http://www.lagou.com')
time.sleep(5)
#输入关键字,点击搜索进行页面进入
driver.find_element(By.ID,'search_input').send_keys('测试开发工程师')
time.sleep(2)
driver.find_element(By.ID,'search_button').click()
time.sleep(2)
#点击学历要求利用XPATH
driver.find_element(By.XPATH,'//*[@id="jobsContainer"]/div[2]/div[1]/div[1]/div[2]/div/ul/li[2]/div').click()
time.sleep(3)
#选择大专

 

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()
time.sleep(5)
driver.close()

posted @ 2022-09-14 17:11  陌上归程  阅读(586)  评论(0编辑  收藏  举报