如何使用Selenium WebDriver执行可行的web烟雾测试?

如何使用Selenium WebDriver执行可行的web烟雾测试?,selenium,selenium-webdriver,webdriver,screen-scraping,Selenium,Selenium Webdriver,Webdriver,Screen Scraping,我一直在用Selenium进行一些可行性和更快的网页加载测试的研究。烟雾测试的总体思路是单击并浏览整个站点,以确保页面正确加载。我最初考虑使用某种方式通过某种http库捕获http状态代码,因为Selenium没有任何本机支持。但是,我发现这不是我想要的,因为它会简单地返回网站的每一个链接,其中大多数都是我不想要的。因此,最好的方法是执行实际的点击并获取页面作为回报。问题在于执行时间。然而,这就是我目前正在做的。将整个应用程序拆分为不同的模块,单击所有可见的链接,并使用已知的选择器获取页面对象。

我一直在用
Selenium
进行一些可行性和更快的网页加载测试的研究。烟雾测试的总体思路是单击并浏览整个站点,以确保页面正确加载。我最初考虑使用某种方式通过某种
http
库捕获
http
状态代码,因为
Selenium
没有任何本机支持。但是,我发现这不是我想要的,因为它会简单地返回网站的每一个链接,其中大多数都是我不想要的。因此,最好的方法是执行实际的点击并获取页面作为回报。问题在于执行时间。然而,这就是我目前正在做的。将整个应用程序拆分为不同的模块,单击所有可见的链接,并使用已知的选择器获取页面对象。我正在使用
FindElements()
方法获取页面的所有链接,并来回单击以测试页面负载。我正在做如下事情:

有没有更好的方法来提高性能?

WebElement deliveredChartDailyFocus = driver.findElement(By.id("delivered-chart-daily"));
deliveredChartDailyFocus.click();

// Get a list of all the <rect> elements under the #delivered-chart-daily element
List<WebElement> children = deliveredChartDailyFocus.findElements(By.tagName("rect"));

WebElement elementToClick = null; // variable for the element we want to click on
for (WebElement we : children)    // loop through all our <rect> elements
{
    if (we.isDisplayed())
    {
        elementToClick = we;      // save the <rect> element to our variable
        break;                    // stop iterating
    }
}

if (elementToClick != null)       // check we have a visible <rect> element
{
    elementToClick.click();
}
else
{
    // Handle case if no displayed rect elements were found
}
WebElement deliveredChartDailyFocus=driver.findElement(By.id(“每日交付图表”);
deliveredChartDailyFocus.click();
//获取#delivered chart daily元素下所有元素的列表
列表子项=deliveredChartDailyFocus.findElements(按.tagName(“rect”));
WebElement elementToClick=null;//要单击的元素的变量
for(WebElement-we:children)//遍历所有元素
{
if(we.isDisplayed())
{
elementToClick=we;//将元素保存到变量中
break;//停止迭代
}
}
if(elementToClick!=null)//检查是否有可见元素
{
元素单击。单击();
}
其他的
{
//如果未找到显示的rect元素,则处理大小写
}

我绝不会将每个环节的验证过程称为“冒烟测试”。例如,如何定义“覆盖组件或系统的主要功能的所有已定义/计划测试用例的子集,以确定程序的最关键功能正常工作,但不需要考虑更精细的细节”。这实际上意味着检验一些有意义的场景,检查一些小流程/功能。仅单击每个链接将检查链接的正确性,而不检查服务器端执行的计算或逻辑。为了提高通过测试的速度,可以考虑并行运行。

谢谢你的回答。我很高兴你提到烟雾测试服将包括多少测试。我确实进行了那次对话,并意识到我们有数百个
ASP
页面,它们几乎是独立的。如果有人触动了这些页面,除非我单击“加载”,否则我不知道他们是否破坏了页面。这可能不是烟雾测试的一部分。但是,我必须在考试的某个地方做。而且,我们正在按顺序执行
Selenium
,不幸的是,由于测试数据冲突,无法并行执行。否则,你的答案就完全有道理了