问题1) TestNG中使用的注释是什么?
Ans:@Test,@ BeforeSuite,@ AfterSuite,@ BeforeTest,@ AfterTest,@ BeforeClass,@ AfterClass,@ BeforeMethod,@ AfterMethod。
问题2)你如何从excel读取数据?
1 2 3 4 5 6 7 |
FileInputStream fis = new FileInputStream(“path of excel file”);
Workbook wb = WorkbookFactory.create(fis);
Sheet s = wb.getSheet(“sheetName”);
String value = s.getRow(rowNum).getCell(cellNum).getStringCellValue(); |
问题3) xpath有什么用?
Ans-用于在网页中查找WebElement。识别动态Web元素非常有用。
问题4) 什么是不同类型的定位器?
Ans-有8种类型的定位器,它们都是By类的静态方法。
By.id(),By.name(),By.tagName(),By.className(),By.linkText(),By.partialLinkText(),By.xpath,By.cssSelector()。
问题5) Assert和Verify有什么区别?
Ans- Assert-用于验证结果。如果测试用例失败,那么它将停止在那里执行测试用例并将控件移动到其他测试用例。
验证 - 它还用于验证结果。如果测试用例失败,那么它将不会停止执行该测试用例。
问题6) 点击登录按钮的替代方法是什么?
Ans-使用submit()方法,但只有在属性type = submit时才能使用它。
问题7) 如何验证是否选中了复选框/收音机?
Ans-我们可以使用isSelected()方法。
句法 -
1 |
driver.findElement(By.xpath("xpath of the checkbox/radio button")).isSelected(); |
如果此方法的返回值为true,则检查否则不是。
问题8) 你如何处理警报弹出窗口?
Ans-要处理警报弹出窗口,我们需要先切换控制以警告弹出窗口,然后单击确定或cancle然后将控制移回主页面。
句法-
1 2 3 4 5 6 7 8 9 10 11 |
String mainPage = driver.getWindowHandle();
Alert alt = driver.switchTo().alert(); // to move control to alert popup
alt.accept(); // to click on ok.
alt.dismiss(); // to click on cancel.
//Then move the control back to main web page-
driver.switchTo().window(mainPage); → to switch back to main page. |
问题9) 你如何推出IE / chrome浏览器?
Ans-在启动IE或Chrome浏览器之前,我们需要设置System属性。
1 2 3 4 5 |
//To open IE browser
System.setProperty(“webdriver.ie.driver”,”path of the iedriver.exe file ”);
WebDriver driver = new InternetExplorerDriver(); |
1 2 3 |
//To open Chrome browser → System.setProperty(“webdriver.chrome.driver”,”path of the chromeDriver.exe file ”);
WebDriver driver = new ChromeDriver(); |
问题10) 如何使用WebDriver执行右键单击?
Ans-使用Actions类
1 2 3 4 5 |
Actions act = new Actions(driver); // where driver is WebDriver type
act.moveToElement(webElement).perform();
act.contextClick().perform(); |
问题11) 如何使用WebDriver执行拖放操作?
Ans-使用Action类
1 2 3 4 5 6 7 |
Actions act = new Actions(driver);
WebElement source = driver.findElement(By.xpath(“ -----”)); //source ele which you want to drag
WebElement target = driver.findElement(By.xpath(“ -----”)); //target where you want to drop
act.dragAndDrop(source,target).perform(); |
问题12) 给出WebDriver中方法重载的例子。
Ans- frame(字符串),frame(int),frame(WebElement)。
问题13) 你如何上传文件?
Ans-要上传文件,我们可以使用sendKeys()方法。
1 |
driver.findElement(By.xpath(“input field”)).sendKeys(“path of the file which u want to upload”); |
问题14) 如何点击下拉菜单中的菜单项?
Ans-如果使用select标签创建了该菜单,那么我们可以使用方法selectByValue()或selectByIndex()或selectByVisibleText()。这些是Select类的方法。
如果尚未使用select标签创建菜单,那么我们可以简单地找到该元素的xpath并单击它以进行选择。
问题15) 你如何模拟浏览器的前后移动?
1 2 3 |
driver.navigate().back();
driver.navigate().forward(); |
问题16)你如何获得当前页面的URL?
1 |
driver.getCurrentUrl(); |
问题17) '/'和'//'之间有什么区别?
Ans- // - 用于搜索整个结构。
/ - 它用于识别直接孩子。
问题18) findElement和findElements有什么区别?
Ans-这两种方法都是WebDriver接口的抽象方法,用于在网页中查找WebElement。
findElement() - 它用于查找一个web元素。它只返回一个WebElement类型。
findElements() - 它用于查找多个Web元素。它返回WebElements列表。
问题19) 如何在WebDriver中实现同步?
Ans-我们可以使用隐式等待。
语法 - driver.manage()。timeouts()。implicitlyWait(10,TimeUnit.SECONDS);
如果执行驱动程序没有立即在页面中找到元素,它将等待10秒。此代码将自动附加到脚本的每一行。每次都不需要写。打开浏览器后只需编写一次。
问题20) 通过Selenium编写Excel读写代码?
1 2 3 4 5 6 7 8 9 10 11 12 13 |
FileInputStream fis = new FileInputStream(“path of excel file”);
Workbook wb = WorkbookFactory.create(fis);
Sheet s = wb.getSheet("sheetName");
String value = s.getRow(rowNum).getCell(cellNum).getStringCellValue(); // read data
s.getRow(rowNum).getCell(cellNum).setCellValue("value to be set"); //write data
FileOutputStream fos = new FileOutputStream(“path of file”);
wb.write(fos); //save file |
问题21) 如何从文本框中获取打字文本?
通过将arg作为值传递来使用getAttribute(“value”)方法。
1 |
String typedText = driver.findElement(By.xpath("xpath of box")).getAttribute("value")); |
问题22) 使用WebDriver时有哪些不同的例外?
Ans- ElementNotVisibleException,ElementNotSelectableException,NoAlertPresentException,NoSuchAttributeException,NoSuchWindowException,TimeoutException,WebDriverException等。
问题23) WebDriver支持哪些语言?
Ans- Python,Ruby,C#和Java都直接由开发团队支持。还有PHP和Perl的webdriver实现。
问题24) 你如何清除硒中文本框的内容?
Ans-使用clear()方法。
1 |
driver.findElement(By.xpath("xpath of box")).clear(); |
问题25) 什么是框架?
Ans-一个框架是一套有助于的自动化指南
保持测试的一致性,改进测试结构,最小化代码使用,减少代码维护,提高可重用性,非技术测试人员可以参与代码,可以减少使用工具的培训期,适当时涉及数据。
软件自动化测试中使用了五种类型的框架:
1数据驱动自动化框架
2方法驱动的自动化框架
3模块化自动化框架
4关键字驱动自动化框架
5-Hybrid Automation Framework,它基本上结合了不同的框架。(1 + 2 + 3)。
问题26) 运行selenium webdriver的先决条件是什么?
Ans- JDK,Eclipse,WebDriver(selenium独立jar文件),浏览器,待测试应用程序。
问题27) 硒webdriver的优点是什么?
答案:它支持大多数浏览器,如Firefox,IE,Chrome,Safari,Opera等。
b)它支持大多数语言,如Java,Python,Ruby,C#等。
b)在执行测试脚本之前不需要启动服务器。
c)它具有实际的核心API,它具有多种语言的绑定。
d)支持移动鼠标光标。
e)它支持测试iphone / Android应用程序。
问题28) 什么是WebDriverBackedSelenium?
Ans- WebDriverBackedSelenium是一种类名,我们可以在其中为它创建一个对象,如下所示:
1 |
Selenium wbdriver= new WebDriverBackedSelenium(WebDriver object name, "URL path of website") |
这个的主要用途是当我们想要使用WebDriver和Selenium RC编写代码时,我们必须使用上面创建的对象来使用selenium命令。
问题29) 如何在webdriver中调用应用程序?
1 |
driver.get(“url”); or driver.navigate().to(“url”); |
问题30) 什么是Selenium Grid?
Ans- Selenium-Grid允许您在不同的机器上并行地针对不同的浏览器运行测试。也就是说,针对不同的计算机,不同的浏览器和操作系统同时运行多个测试。从本质上讲,Selenium-Grid支持分布式测试执行。它允许在分布式测试执行环境中运行测试。
问题31) 如何获取页面上的帧数?
1 2 3 |
List <WebElement> framesList = driver.findElements(By.xpath("//iframe"));
int numOfFrames = frameList.size(); |
问题32) 你如何模拟向下滚动动作?
Ans-使用java脚本向下滚动 -
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 28 29 30 31 |
JavascriptExecutor jsx = (JavascriptExecutor)driver;
jsx.executeScript("window.scrollBy(0,4500)", ""); //scroll down, value 4500 you can change as per your req
jsx.executeScript("window.scrollBy(450,0)", ""); //scroll up
ex-
public class ScrollDown {
public static void main(String[] args) throws InterruptedException {
WebDriver driver = new FirefoxDriver();
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
driver.get("http://www.flipkart.com/womens-clothing/pr?sid=2oq,c1r&otracker=hp_nmenu_sub_women_1_View%20all");
driver.manage().window().maximize();
JavascriptExecutor jsx = (JavascriptExecutor)driver;
jsx.executeScript("window.scrollBy(0,4500)", ""); //scroll down
Thread.sleep(3000);
jsx.executeScript("window.scrollBy(450,0)", ""); //scroll up
}
} |
问题33)当我们使用testng时,我们必须在.bat文件中写入以执行selenium项目的命令行是什么?
Ans- java -cp bin; jars / * org.testng.TestNG testng.xml
问题34) 使用WebDriver时要导入的包是哪个?
Ans- org.openqa.selenium
问题35) 如何检查网页上是否有元素可见?
Ans-使用isDisplayed()方法。该方法的返回类型是boolean。因此,如果它返回true,则元素是可见的,否则不可见。
1 |
driver.findElement(By.xpath("xpath of elemnt")).isDisplayed(); |
问题36) 如何检查页面上是否启用了按钮?
Ans-使用isEnabled()方法。该方法的返回类型是boolean。因此,如果它返回true,则启用按钮,否则不启用。
1 |
driver.findElement(By.xpath("xpath of button")).isEnabled(); |
问题37) 如何检查页面上是否突出显示文本?
答 - 识别某个字段的天气颜色是否不同 -
1 2 3 4 5 6 7 |
String color = driver.findElement(By.xpath("//a[text()='Shop']")).getCssValue("color");
String backcolor = driver.findElement(By.xpath("//a[text()='Shop']")).getCssValue("background-color");
System.out.println(color);
System.out.println(backcolor); |
这里如果颜色和背面颜色不同,那么这意味着元素具有不同的颜色。
问题38) 如何选中复选框或单选按钮?
Ans-使用isSelected()方法进行识别。该方法的返回类型是boolean。因此,如果它返回true,则选择按钮,否则不启用。
1 |
driver.findElement(By.xpath("xpath of button")).isSelected(); |
问题39) 如何获得页面的标题?
Ans-使用getTitle()方法。
1 |
Syntax- driver.getTitle(); |
问题40) 你如何获得文本框的宽度?
1 2 3 |
driver.findElement(By.xpath(“xpath of textbox ”)).getSize().getWidth();
driver.findElement(By.xpath(“xpath of textbox ”)).getSize().getHeight(); |
问题41) 你如何获得网络元素的属性?
Ans- driver.getElement(By.tagName(“img”))。getAttribute(“src”)将为您提供此标记的src属性。同样,您可以获取title,alt等属性的值。
类似地,您可以使用getCssValue(“some somepepe name”)获取任何标记的CSS属性。
问题42) 如何检查文本是否加下划线?
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 28 29 30 31 32 33 |
Ans- Identify by getCssValue(“border-bottom”) or sometime getCssValue(“text-decoration”) method if the
cssValue is 'underline' for that WebElement or not.
ex- This is for when moving cursor over element that is going to be underlined or not-
public class UnderLine {
public static void main(String[] args) {
WebDriver driver = new FirefoxDriver();
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
driver.get("https://www.google.co.in/?gfe_rd=ctrl&ei=bXAwU8jYN4W6iAf8zIDgDA&gws_rd=cr");
String cssValue= driver.findElement(By.xpath("//a[text()='Hindi']")).getCssValue("text-decoration");
System.out.println("value"+cssValue);
Actions act = new Actions(driver);
act.moveToElement(driver.findElement(By.xpath("//a[text()='Hindi']"))).perform();
String cssValue1= driver.findElement(By.xpath("//a[text()='Hindi']")).getCssValue("text-decoration");
System.out.println("value over"+cssValue1);
driver.close();
}
} |
问题43) 如何使用selenium web驱动程序更改网页上的URL?
1 2 3 |
driver.get(“url1”);
driver.get(“url2”); |
问题44) 如何将鼠标悬停在元素上?
1 2 3 |
Actions act = new Actions(driver);
act.moveToElement(webelement); //webelement on which you want to move cursor |
问题45) getOptions()方法有什么用?
Ans- getOptions()用于从下拉列表中获取所选选项。
问题46) deSelectAll()方法有什么用?
Ans-用于取消选择从下拉列表中选择的所有选项。
问题47) WebElement是一个接口还是一个类?
Ans- WebDriver是一个界面。
问题48) FirefoxDriver是类还是接口,它从哪里继承?
Ans- FirefoxDriver是一个类。它实现了WebDriver接口的所有方法。
问题49) 哪个是webdriver的超级界面?
Ans- SearchContext。
问题50) b / w close()和quit()有什么区别?
Ans- close() - 它将关闭控件所在的浏览器。
quit() - 它将关闭WebDriver打开的所有浏览器。