自動化測驗已經成為現代軟體測驗中不可或缺的一部分,在自動化測驗中,Selenium是最受歡迎的工具之一,因為它可以模擬用戶與Web應用程式的互動,因此,對于許多測驗工程師來說,熟練掌握Selenium框架是非常重要的,如果你正在尋找一份自動化測驗作業,那么你可能會被問到一些關于Selenium的面試問題,在本文中,我們將介紹一些最常見的Selenium自動化面試問題和答案,幫助你為面試做好準備,
Selenium一個基于web的開源的UI自動化測驗框架,Selenium支持大多數語言,如Java、PHP、Python、Perl、Ruby等,因此成為測驗專業人員中最受歡迎的工具之一,它是不同測驗工具的組合,如Selenium IDE、Selenium RC、WebDriver和Selenium Grid,
Selenium命令通常被稱為selenese,是用來運行測驗的一個命令的集合,測驗人員可以使用Selenese測驗損壞的鏈接、UI上某些物件的存在、Ajax功能、彈窗、視窗、串列選項等等,
它是Selenium RC 和 WebDriver 的組合,
它是XML檔案中元素的路徑,通過使用它,我們可以很容易地找出網頁上的各種元素,如//tagname[@attribute=’value’]
定位器用于識別網頁上的元素,它是HTML網頁的屬性,我們使用不同型別的定位器來查找頁面元素,例如:
-
ID
-
Name
-
cssSelector
-
Link text
-
PartialLinkText
-
ClassName
-
tagName
1.絕對路徑以單個正斜杠/開頭,這意味著你可以從根節點選擇元素,
如html/body/div[4]/div[2]/a,
2.相對路徑以雙正斜杠//和HTML內容的中間開始,它比絕對路徑小而健壯,
如//*[@id=’Blog1′]/div[1]/a,
1.Selenium只支持基于web的應用,
2.無法讀取驗證碼,
3.Selenium 沒有生成測驗結果的內置工具,
4.由于 Selenium是一個開源工具,所以它不提供任何技術支持,
5.Selenium沒有任何物件存盤庫,因此我們無法在其中維護物件,為了克服這個問題,我們使用頁面物件模型概念,
1.Assert:如果我們在測驗腳本中使用Assert命令,那么如果有任何測驗步驟失敗,測驗執行將停止,
2.Verify:它還用于驗證測驗步驟,但在任何時候測驗步驟失敗,測驗執行將繼續,
有時Selenium比我們的Web應用程式更快,反之亦然,在這種情況下,我們必須管理兩者的速度以運行我們的測驗腳本,所以我們有不同的等待命令,比如隱式等待、顯式等待等,
隱式等待:為整個測驗執行期間設定時間,例如,如果Selenium沒有找到任何元素,那么它會在給定的時間段內等待元素,如果在給定時間內沒有找到該元素,那么它將拋出例外ElementNotVisibleException,
driver.manage().timeouts().implicitlyWait(20, TimeUnits.SECONDS);
顯式等待:為特定的一個元素設定時間,如元素可見,按鈕可點擊等,如果我們為按鈕設定顯式等待3秒,然后Selenium為該按鈕等待3秒,如果按鈕在3秒內無法單擊,則Selenium會拋出例外ElementNotVisibleException,
11什么是iframe以及如何定位?WebDriverWait wait = new WebDriverWait(driver, 3);
wait.until(ExpectedConditions.elementToBeClickable(By.id(“id”)));
1.iframe是一個網頁,它是HTML頁面的獨立部分,iframe用于顯示一些不同的東西,如廣告等,對于 iframe,我們使用<iframe>標簽,
2.如何處理iframe:在處理iframe之前,我們首先應該知道如何識別任何網頁中的iframe,因此,首先需要在網頁中搜索iframe,如下圖所示,

在Selenium中可以用三種不同的方式來處理iframe:
-
By Name
driver.switchTo().frame(“frameName”);
-
By Index
driver.switchTo().frame(indexOfFrame);
-
By WebElement
12Webdriver有哪些不同型別的驅動程式?driver.switchTo().frame(“xpath of frame “);
-
FirefoxDriver
-
ChromeDriver
-
InternetExplorerDriver
-
SafariDriver
-
OperaDriver
-
AndriodDriver
-
IPhoneDriver
-
HtmlUnitDriver
可以使用isSelected()方法
14如何斷言按鈕是否啟用?driver.findElement(By.xpath(“locator of Checkbox”)).isSelected();
可以使用isEnabled()方法
15如何斷言元素是否可見?driver.findElement(By.xpath(“locator of button”)).isEnabled();
可以使用isDisplayed()方法
16如何從文本框中獲取文本?driver.findElement(By.xpath(“locator of web element”)).isDisplayed();
可以使用getText()方法
17什么是動作類(Actions)?driver.findElement(By.xpath(“xpath of textbox”)).getText();
Actions類用于處理鍵盤事件、滑鼠懸停事件(如拖放、回車、Tab、Shift鍵等),我們還可以雙擊任何元素,使用Action類右鍵單擊任何元素,
Actions act = new Actions(driver);
// 滑鼠懸停在元素上并單擊它
act.moveToElement(element).click().build().perform();
18如何從下拉串列中選擇一個值?注意:Actions類中的build()和perform()是兩個非常重要的方法,它們通常一起使用,build()方法用于構建要執行的所有操作序列,但是并不實際執行這些操作,如果在build()方法后沒有呼叫perform()方法,那么這些操作將不會被執行,perform()方法用于實際執行在build()方法中構建的所有操作序列,當呼叫perform()方法時,Selenium會按照構建的序列依次執行每個操作,
通過使用Select類,有以下方法可以獲取下拉串列的值,
-
selectByIndex()
-
selectByValue()
-
selectByVisibleText()
19get()和navigate()有什么區別?WebElement element = driver.findElement(By.xpath(“xpath of city dropdown”));
Select dropdownvalue = https://www.cnblogs.com/ccssx/p/new Select(element);
// 選擇第二個下拉值 - Jaipur
dropdownvalue.selectByIndex(1);
dropdownvalue.selectByValue(“Jaipur”);
dropdownvalue.selectByVisibleText(“Jaipur”);
-
get()方法用于導航到指定的URL,并等待頁面加載完成,
driver.get(“https://www.cnblogs.com/mrjade”);
-
navigate()方法提供了一組導航方法,包括back()、forward()和refresh(),這些方法用于在瀏覽器歷史記錄中導航,或者重繪當前頁面,
20如何處理Alert彈窗?driver.navigate().forward();
driver.navigate().back();
driver.navigate().refresh();
Selenium可以使用Alert類來處理JavaScript彈窗
21如何獲取Web應用程式頁面標題?// 在 alert 單擊確定按鈕
driver.switchTo().alert().aceept();
// 在 alert 單擊取消按鈕
driver.switchTo().alert().dismiss();
// 獲取 alert 文本
String alerttext = driver.switchTo().alert().getText();
22如何在Selenium中處理多個視窗?String pagetitle = driver.getTitle();
-
獲取當前視窗句柄,
-
打開新視窗,
-
獲取所有視窗句柄串列,
-
遍歷視窗句柄串列,找到新視窗句柄,
-
切換到新視窗,
-
執行操作,
-
切換回原來的視窗,
23如何斷言提示框文本?// 獲取當前視窗句柄
String originalHandle = driver.getWindowHandle();
// 點擊“打開新視窗”鏈接
driver.findElement(By.linkText("打開新視窗")).click();
// 獲取所有視窗句柄串列
Set<String> handles = driver.getWindowHandles();
/ 遍歷視窗句柄串列,找到新視窗句柄
for (String handle : handles) {
if (!handle.equals(originalHandle)) {
driver.switchTo().window(handle);
break;
}
}
要驗證提示框文本,我們必須將滑鼠懸停在出現提示框的文本元素上,然后使用getAttribute()方法獲取,
24如Selenium可能出現的例外有哪些?WebElement element = driver.findElement(By.xpath(“xpath"));
Action act = new Actions(driver);
act.moveToElement(element).build().perform();
// 獲取提示文本
tring tooltip_text = element.getAttribute(“title”)
// 斷言
Assert.assertEquals(“mrjade”, tooltip_text);
-
NoSuchElementException:當
WebDriver無法使用指定的定位器找到網頁上的元素時,會發生此例外, -
ElementNotVisibleException:當
WebDriver無法與元素進行互動,因為該元素在網頁上不可見時,會發生此例外, -
TimeoutException:當
WebDriver無法在指定的時間限制內執行操作時,會發生此例外, -
StaleElementReferenceException:當
WebDriver無法與元素進行互動,因為該元素不再附加到網頁的DOM上時,會發生此例外, -
NoSuchFrameException:當
WebDriver無法使用指定的定位器找到網頁上的框架時,會發生此例外, -
InvalidSelectorException:當指定的定位器策略無效或定位器語法不正確時,會發生此例外,
-
WebDriverException:這是一種通用的例外情況,可能由各種原因引起,例如網路問題、服務器問題或瀏覽器崩潰等,
如果是input元素,可以通過使用sendKeys()方法,上傳檔案,在sendKeys中,只需要傳檔案路徑+檔案名即可,但有時當我們點擊上傳檔案按鈕時,會打開彈出視窗以從Pc中選擇檔案,在這種情況下,sendKeys命令不起作用,所以我們可以使用第三方工具如:AutoIt,Robot 來上傳檔案,
最后: 為了回饋鐵桿粉絲們,我給大家整理了下面這些面試題是來自阿里、騰訊、位元組等一線互聯網大廠最新的面試資料,并且有位元組大佬給出了權威的解答,刷完這一套面試資料相信大家都能找到滿意的作業,
這些面試資料獲取方式:進入我創建的軟體測驗學習交流群:【914172719】,備注“入群”可自取這份檔案, 大家也可以一起探討交流,共同學習軟體測驗技術、面試等軟體測驗方方面面,還會有免費直播課,識訓更多測驗技巧,我們一起進階Python自動化測驗/測驗開發,走向高薪之路,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/553422.html
標籤:其他
下一篇:返回列表

