Selenium 硒限制

Selenium 硒限制,selenium,automation,Selenium,Automation,在运行selenium automation时,有些情况下由于速度缓慢而失败,有些情况下由于其他一些情况而失败(例如,如果selenium单击一个链接,该链接显示该文档列表中的文档列表,如果selenium执行某些操作,如果初始链接未能加载文档列表,则表示整个案例失败,如果许多案例依赖于初始链接,则表示所有案例都失败,但如果selenium通过单击不同的链接并获取文档列表来执行相同的操作),任何解决此问题的想法您所描述的不是Selenium限制,而是您将不得不面对的测试自动化的常见挑战 关于使测

在运行selenium automation时,有些情况下由于速度缓慢而失败,有些情况下由于其他一些情况而失败(例如,如果selenium单击一个链接,该链接显示该文档列表中的文档列表,如果selenium执行某些操作,如果初始链接未能加载文档列表,则表示整个案例失败,如果许多案例依赖于初始链接,则表示所有案例都失败,但如果selenium通过单击不同的链接并获取文档列表来执行相同的操作),任何解决此问题的想法

您所描述的不是Selenium限制,而是您将不得不面对的测试自动化的常见挑战

关于使测试用例失败的缓慢性。基本上有两种策略使测试用例通过。第一种是降低测试用例的执行速度(Selenium lib中有相应的命令)。这并不好,因为您的测试套件将结束很长时间。第二种方法是使用“等待元素出现”使用该功能,您可以等到屏幕上出现一个按钮后再要求selenium单击它


关于相互依赖的测试用例。这里您要做的是将大型和/或相互依赖的测试用例分解为小型和独立的测试用例。例如,您可以让TC1进行测试,当单击链接时,它会显示文档列表。如果您要在TC2中的文档列表上执行某些操作,那么您应该找到TC2在没有Selenium的情况下设置其初始配置的方式。对于某些网页,它将是一个特定/自定义URL,可以驱动某些元素的显示。对于其他网页,它可能是一个cookie。您必须与开发团队讨论。

字典将限制定义为“能力有限的条件;缺陷或失败”,您的陈述中没有描述过,与硒有关

我想到的是设计糟糕的测试用例——例如,测试用例依赖性,在所有测试中只有一个失败点。
而且速度慢,如果设计的很差,为什么会有人认为测试用例的执行速度会很快呢?

文本执行也取决于应用程序的性能。如果是selenium,请确保在脚本中包含以下代码

package com.test;
import java.util.concurrent.TimeUnit;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;

public class Wait {

    public static void main(String[] args) {
        WebDriver driver=new FirefoxDriver();
        driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);
        driver.get("https://www.google.co.in");
        driver.manage().window().maximize();
        driver.findElement(By.id("gb_70")).click();
        driver.findElement(By.id("Email")).sendKeys("abc@gmail.com");
    }
}
此外,如果应用程序识别对象速度较慢,则使用WeDriver wait。它包括各种选项,如“elementToBeClickable”、“elementToBeSelected”、“presenceOfElementLocated”


我假设您已经仔细设计了所有测试用例,并为应用程序使用了最佳页面定位器

例如:

  • 在开始执行之前清除缓存内存

  • 如果剩余时间不需要cookies,请尝试清除cookies 执行

  • 使用等待(显式或隐式,甚至使用睡眠)

  • 检查selenium webdriver版本和浏览器版本 它支持(很多时候这可能是故障的原因)


这些是一些可以帮助减少故障的基本方法。

硒的局限性

  • 无法处理windows弹出窗口
  • 无法自动化移动应用程序/windows应用程序
  • 无法自动验证码
  • selenium提供的支持较少
  • 必须掌握selenium支持的任何一种语言
  • 无需使用Junit、TestNg和Extentds报表生成内置报表

  • 测试用例绝对不应该相互依赖,这听起来像是。什么是“慢度”?你观察到测试运行了吗?它在哪里慢?当它点击按钮时?实际找到元素?页面加载?你在使用什么驱动程序?向我们展示一些慢的基本工作代码,并测量它有多慢。你是否使用explicit等待?如果不等待,为什么不等待?实现它们!@Arran单元测试可能不依赖于另一个单元测试,但GUI测试并非如此。只要应用程序产生并保持状态,测试的连续性就会影响结果。GUI测试首先应该模拟客户的旅程。相互隔离只能是第二个优先级这太可怕了:
    driver.manage().timeouts().implicitlyWait(20,TimeUnit.SECONDS);
    !无论何时尝试定位元素,都会应用隐式等待。如果该元素存在,调用将快速返回。但是如果您有意检查元素的缺失(“我不想显示错误消息!”)您的测试将被阻止20秒!这将大大降低您的测试速度,您甚至可能不知道这是从何而来。
    WebDriverWait wait = new WebDriverWait(driver, 10);
    
    WebElement element = wait.until(ExpectedConditions.elementToBeClickable(By.id("gb_70")));       
    
    element.click();
    
    WebElement element1 = wait.until(ExpectedConditions.presenceOfElementLocated(By.id("Email")));  
    
    element1.sendKeys("abc@gmail.com");