问题1)我们可以在不使用sendKeys()的情况下输入文本吗?
Ans - 是的,我们可以不使用sendKeys()方法输入文本。我们必须使用javascript和包装类与WebDriver扩展类的组合,检查下面的代码 -
1 2 3 4 5 6 7 8 9 10 11 | public static void setAttribute(WebElement element, String attributeName, String value)
{
WrapsDriver wrappedElement = (WrapsDriver) element;
JavascriptExecutor driver = (JavascriptExecutor)wrappedElement.getWrappedDriver();
driver.executeScript("arguments[0].setAttribute(arguments[1],arguments[2])", element, attributeName, value);
} |
在测试脚本中调用上述方法并传递文本字段属性并传递要输入的文本。
问题2)有一种情况,只要“Assert.assertEquals()”函数自动失败,就必须截取屏幕截图。你怎么能实现这个目标?
Ans-使用EventFiringWebDriver。
1 2 3 4 5 | Syntax-EventFiringWebDriver eDriver=new EventFiringWebDriver(driver);
File srcFile = eDriver.getScreenshotAs(OutputType.FILE);
FileUtils.copyFile(srcFile, new File(imgPath)); |
问题3)你如何处理硒中的https网站 ?
Ans-通过更改FirefoxProfile的设置。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | Syntax-public class HTTPSSecuredConnection {
public static void main(String[] args){
FirefoxProfile profile = new FirefoxProfile();
profile.setAcceptUntrustedCertificates(false);
WebDriver driver = new FirefoxDriver(profile);
driver.get("url");
}
} |
问题4)如果显示任何用户名的认证弹出并通过,如何登录任何网站?
Ans - 用url传递用户名和密码。
1 2 3 | Syntax- http://username:password@url
ex- http://creyate:jamesbond007@alpha.creyate.com |
问题5)Headless浏览器的名称是什么?
Ans- HtmlUnitDriver。
问题6)在内存中打开浏览器意味着无论何时尝试打开浏览器,浏览器页面都不能来,并且可以在内部执行操作。
Ans-使用HtmlUnitDriver。
EX-
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | public class Memory {
public static void main(String[] args) {
HtmlUnitDriver driver = new HtmlUnitDriver(true);
driver.setJavascriptEnabled(false);
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
driver.get("https://www.google.co.in/");
System.out.println(driver.getTitle());
}
} |
问题7)使用TestNG有什么好处?
Ans-
a)TestNG允许我们根据组执行测试用例。
b)在TestNG中,注释很容易理解。
c)在TestNG中可以并行执行Selenium测试用例。
d)生成三种报告
e)可以改变执行顺序
f)可以执行失败的测试用例
g)如果没有main函数,我们可以执行测试方法。
h)可以生成xml文件以执行整个测试套件。在那个xml文件中,我们可以重新排列执行顺序,我们也可以跳过特定测试用例的执行。
问题8)如何在不使用EventFiringWebDriver的情况下拍摄屏幕截图?
Ans-
1 2 3 4 5 | File srcFile = ((TakeScreenshot)driver).getScreenshotAs(OutputType.FILE); //now we can do anything with this screenshot
like copy this to any folder-
FileUtils.copyFile(srcFile,new File(“folder name where u want to copy/file_name.png”)); |
问题9)如何在WebDriver中发送ENTER / TAB键?
Ans-使用click()或submit()[submit()只能在用于ENTER的type ='submit'])方法时使用。或使用Actions类按键。
对于进入 -
1 | act.sendKeys(Keys.RETURN); |
对于Tab-
1 | act.sendKeys(Keys.ENTER); |
其中act是Actions类类型。(Actions act = new Actions(driver);)
问题10)什么是Datadriven框架和关键字驱动?
Ans- Datadriven框架 -在此框架中,当测试用例逻辑驻留在测试脚本中时,测试数据被分离并保存在测试脚本之外。测试数据从外部文件(Excel文件)中读取并加载到内部的变量中。测试脚本。变量既用于输入值,也用于验证值。
关键字驱动框架 - 关键字驱动或表驱动框架需要开发数据表和关键字,而不依赖于用于执行它们的测试自动化工具。可以在有或没有应用程序的情况下设计测试。在关键字驱动的测试中,测试中的应用程序的功能记录在表格中以及每个测试的逐步说明中。
问题11)在解释框架时,应该涵盖哪些要点?
Ans-
a)框架工作是什么。
b)您正在使用哪种框架。
c)为什么这个框架工作。
d)建筑。
e)框架工作的每个组成部分的说明。
f)框架工作后的流程。
g)如何以及何时执行框架工作。
h)代码(你必须编写代码并解释)。
i)结果和报告。
j)你应该能够在20分钟内解释它。
问题12)如何从框架切换回来?
Ans-使用方法defaultContent()。
1 | Syntax – driver.switchTo().defaultContent(); |
问题13)如何在文本区域内的新行中键入文本?
Ans-使用\ n表示新行。
1 | ex- webelement.sendKeys(“Sanjay_Line1.\n Sanjay_Line2.”); |
它将在文本框中键入 -
Sanjay_Line1。
Sanjay_Line2。
问题14)AutoIt工具有什么用?
Ans-有时候在用硒进行测试时,我们会遇到一些中断问题,比如基于窗口的弹出窗口。但是selenium无法解决这个问题,因为它只支持基于Web的应用程序。为了解决这个问题,我们需要使用AutoIT和selenium脚本。AutoIT是处理基于窗口的应用程序的第三方工具。使用的脚本语言是在VBScript中。
问题15)如何使用WebDriver执行双击?
Ans-使用doubleClick()方法。
1 2 3 | Syntax- Actions act = new Actions(driver);
act.doubleClick(webelement); |
问题16)如何按Shift + Tab?
Ans-
1 2 3 | String press = Keys.chord(Keys.SHIFT,Keys.ENTER);
webelement.sendKeys(press); |
问题17)contextClick()有什么用?
Ans-用于右键单击。
问题18)b / w getWindowHandles()和getWindowHandle()有什么区别?
Ans- getWindowHandles() - 用于获取所有打开的浏览器的地址,其返回类型为Iterator <String>。
getWindowHandle() - 用于获取conrol所在的当前浏览器的地址,返回类型为String。
问题19)您如何在框架中容纳项目特定方法?
Ans- 1st完成所有手动测试用例并确定重复的步骤。记下这些步骤并将它们作为方法并写入ProjectSpecificLibrary。
问题20)您的框架有哪些不同的组件?
Ans- Library- Assertion,ConfigLibrary,GenericLibrary,ProjectSpecificLibrary,Modules。
Drivers文件夹,Jars文件夹,excel文件。
问题21)Selenium IDE支持哪些浏览器?
只有Ans- Mozilla FireFox。它是一个Firefox添加。
问题22)Selenium IDE有哪些限制?
Ans-
a)它不支持循环或条件语句。测试人员必须使用本机语言在测试用例中编写逻辑。
b)它不支持测试报告,您必须使用selenium RC和一些外部报告插件(如TestNG或JUint)来获取测试执行报告。
c)也不支持错误处理,具体取决于本地语言。
d)仅支持Mozilla FireFox。它是一个Firefox添加。
问题23)如何检查页面中的所有复选框?
Ans-
1 2 3 4 5 6 7 | List<webElement> chkBox = driver.findElements(By.xpath(“//htmltag[@attbute='checkbox']”));
for(int i=0; i<=chkBox.size(); i++){
chkBox.get(i).click();
} |
问题24)计算页面中的链接数。
Ans-使用定位器By.tagName并找到标签的元素//然后使用循环来计算找到的元素数量。
1 2 3 4 5 | Syntax- int count = 0;
List<webElement> link = driver.findElements(By.tagName(“a”));
System.out.println(link.size()); // this will print the number of links in a page. |
问题25)如何在浏览器中识别元素的Xpath?
并且 - 为了找到xpath,我们在firefox浏览器上使用Firebug插件并识别我们使用Firepath插件编写的xpath。
1 | Syntax- //htmltag[@attname='attvalue'] or //html[text()='textvalue'] or //htmltag[contains(text(),'textvalue')] or //htmltag[contains(@attname,'attvalue')] |
问题26)什么是Selenium Webdriver?
Ans- WebDriver是应该用Java编写测试的关键接口的名称。WebDriver的所有方法都由RemoteWebDriver实现。
问题27)什么是Selenium IDE?
Ans- Selenium IDE是Selenium测试的完整集成开发环境(IDE)。它作为Firefox附加组件实现,允许记录,编辑和调试测试。它以前被称为Selenium Recorder。
可以手动自动记录和编辑脚本,提供自动完成支持和快速移动命令的功能。
脚本以Selenese记录,Selenese是Selenium的一种特殊测试脚本语言。Selenese提供了在浏览器中执行操作的命令(单击链接,选择选项),以及从结果页面中检索数据。
问题28)硒的味道是什么?
Ans- selenium IDE,selenium RC,Selenium WebDriver和Selenium Grid。
问题29)什么是硒?
Ans-它是一个开源的Web自动化工具。它支持所有类型的Web浏览器。尽管是开源的,但它积极开发和支持。
问题30)硒优于其他工具的优势?
Ans-
a)免费,
b)它支持许多语言,如Java,C#,Ruby,Python等,
c)它允许简单而强大的DOM级别测试等。
问题31)RC和webdriver的主要区别是什么?
Ans- Selenium RC在加载网页时将javascript功能注入浏览器。
Selenium WebDriver使用浏览器的内置支持来驱动浏览器。
问题32)为什么你选择RCdriver上的webdriver?
Ans-
a)原生自动化更快,更不容易出错和浏览器配置,
b)不需要运行Selenium-RC Server
c)访问无头HTMLUnitDriver可以实现真正快速的测试
d)很棒的API等
问题33)哪一个更好的xpath或CSS?
Ans- xpath。
问题34)你将如何处理动态元素?
Ans-通过编写相对xpath。
问题35)你的脚本中使用的不同断言或检查点是什么?
Ans-常见的验证类型是:
a)页面标题是否符合预期,
b)针对页面上元素的验证,
c)页面上是否存在文字,
d)javascript调用是否返回预期值。
1 | method used for validation – Assert.assertEquals(); |
问题36)WebDriver中的动作类是什么?
Ans- Actions类用于控制鼠标的动作。
问题37)@ BeforeMethod和@BeforeClass有什么区别?
Ans- @ BeforeMethod-这将在每个@Test方法之前执行。
@ BeforeClass-这将在每个课程之前执行。
问题38)@Test注释的不同属性是什么?
Ans- alwaysRun,dataProvider,dependsOnMethods,enabled,expectedExceptions,timeOut等。
1 2 3 | ex- @Test(expectedExceptions = ArithmeticException.class)
@Test(timeOut = 2000) |
问题39)我们可以使用TestNG运行一组测试用例吗?
答案 - 是的。
问题40)什么是对象存储库?
Ans-对象存储库是任何UI自动化工具中非常重要的实体。存储库允许测试人员将脚本中将使用的所有对象存储在一个或多个集中位置,而不是让它们分散在整个测试脚本中。对象存储库的概念不仅仅与WET绑定在一起。它可用于任何UI测试自动化。实际上,引入对象存储库概念的最初原因是QTP所需的框架。
问题41)什么是oops概念?
Ans-
a)封装,
b)抽象,
c)多态性,
d)继承。
问题42)什么是遗产?
Ans-通过在类/接口之间建立某种关系来继承任何类的特性,称为继承。
问题43)过载和覆盖有什么区别?
Ans-传递不同参数列表/类型的方法称为方法重载,而具有不同方法体的相同方法签名称为方法重写。
问题44)java是否支持多重继承?
Ans-接口支持多重继承但类不支持。
问题45)编写一个java程序来交换两个数字?
Ans-
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | public class Swapping{
public static void main(String[] args){
Scanner in = new Scanner(System.in);
System.out.println(“enter the 1st num”);
int a = in.nextInt();
System.out.println(“enter the 2nd num”);
int b = in.nextInt();
System.out.println(“before swapping a=”+a+” and b= ”+b);
int x = a;
a = b;
b = x;
System.out.println(“After swapping a=”+a+” and b= ”+b);
}
} |
问题46)为给定数字的阶乘写一个java程序。
Ans-
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | public class Factorial{
public static void main(String args[]){
Scanner in = new Scanner(System.in);
System.out.println(“enter the num for which u want the factorial”);
int num = in.nextInt();
for(int i=num-1; i>0; i-- ){
num = num*i;
}
System.out.println(num);
}
} |
问题47)Java中有哪些不同的访问说明符?
Ans-私有,默认,受保护和公开。
问题48)为什么我们要进行自动化测试?
答案 - 原因 -
a)手动测试所有工作流程,所有领域,所有负面情况都是耗费时间和成本的。
b)手动测试多语言站点很困难。
c)自动化不需要人为干预。我们可以在无人值守的情况下运行自动化测试(一夜之间)。
d)自动化提高了测试执行的速度。
e)自动化有助于提高测试覆盖率。
f)手动测试可能变得无聊,因此容易出错。
问题49)什么是测试策略?
Ans-测试策略文档是一个高级文档,通常由项目经理开发。本文档定义了“软件测试方法”以实现测试目标。测试策略通常来自业务需求规范文档。
问题50))如果我的用户名不正确,写一个代码来使用断言。
Ans-
1 2 3 4 5 6 7 8 9 | try{
Assert.assertEquals(expUserName, actUserName);
}catch(Exception e){
Syste.out.println(“name is invalid”);
} |