UI自动化测试的几大问题

164 阅读3分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第一天,点击查看活动详情

在自动化中UI自动化是自动化测试中不可分割的一部分,也是黑盒测试的测试的一个重要手段。我今天简单的讲讲ui自动化的一些问题,希望可以帮到大家。

一、在启动浏览器时会报错

**报错信息:** Exception in thread "main" org.openqa.selenium.WebDriverException: unknown error: call function result missing 'value'  

出现以上报错信息,是由于浏览器版本与driver版本不匹配,在进行UI测试之前,一定要先检查自己浏览器的版本,然后找到对应版本的driver,这样才能正常启动浏览器进行测试。

二、无匹配元素/元素不可见

例如,报错信息为:ValueError: Element locator 'id=msgCount' did not match any elements.  

首先,确认是否设置了合理的等待时间,在web的UI测试过程中,我们需要等待元素加载完成之后,才可以定位到对应的元素;其次,如果设置等待时间仍然无法解决问题,再检查定位方式是否准确,并切换不同的方式进行元素定位,常用的元素定位方法包括id、name、className、partialLinkText()、linkText、xpath、cssSelector();一般情况下,出现无法定位或者找不到元素的情况,都是由于没有设置合理的等待时间。

三、切换浏览器窗口

在进行UI自动化测试过程中,我们通过链接打开一个新的页面时,需要进行窗口切换,才能在新页面进行操作,代码如下:

//操作新窗口中的新页面,获取新窗口的句柄!!!
String winHandleBefore 2 = driver.getwindowHandle();
for (String winHandle : driver.getwindowHandles()) 
{
    if( winHandle.equals(winHandleBefore 2))
    {
    continue;
    }
    driver.switchTo().window(winHandle);
    break;
}

其中,driver.getWindowHandle();获取当前窗口句柄(系统分配的唯一标识,跟身份证一样)  driver.getWindowHandles();获取当前浏览器所有窗口的句柄集  此外,获取当前浏览所有窗口的句柄集,相当于一个列表,也可以通过如下代码来切换到最新打开的页面:

new_handle=driver.getWindowHandles()[-1];

driver.swicth_To().window(new_handle);

四、定位

Webdriver定位class属性中有空格的值

  例如:定位" class="bg s_btn",一共有三种处理方式:

self.browser.find_element_by_class_name("s_btn").submit()   #第一种解决办法:class值取其中之一

self.browser.find_element_by_class_name("bg").submit()   #第二种解决办法:class值取其中之一

self.browser.find_element_by_css_selector(".bg.s_btn").submit()  #第三种解决办法:使用css.selector,每个class值前面加.

  其中,在使用前两种方法的时候,需要确认我们选取的元素不会在该页面上存在重复,因此建议使用css.selector方式进行定位,以保证元素查找的唯一性。

**五、处理图片验证码

在进行登录注册等操作时,我们经常需要处理一些验证码;除了通过万能码进行登录之外,我们还可以调用百度提供的开放接口进行验证码处理,接口说明文档如下:  ai.baidu.com/docs#/OCR-A…