Selenium Java教程– Selenium中的类名定位器
Selenium中CSS Locator是編寫腳本的最重要方面之一。 如果您無法通過使用Selenium中的任何CSS定位器來定位元素,那么精通Selenium自動化將是一項艱巨的任務。 硒提供多種定位元素的方法。
您可以查看有關Selenium中不同CSS定位器的其他文章,這些文章可通過多種方式幫助您定位元素:
- 硒中的鏈接文本和部分鏈接文本
- Selenium中的ID定位器
- 硒中的名稱定位器
- Selenium中的標記名定位器
- Selenium中CSS選擇器
- Selenium中的XPath
如果您是Selenium Java的高級或中級從業人員,那么您可以喜歡上面提到的專門文章。 我編寫了完整的指南,以幫助您說明Selenium中CSS定位器的實際演示。
查看Selenium WebDriver中每個CSS定位器的完整指南,并附帶示例
在本Selenium Java教程中,我將參考Selenium中的類名定位器,以演示如何通過類名在網頁上定位元素。
Selenium中的類名定位器入門與示例
為了在Selenium中使用類名定位器,我們需要使用以下語法:
findElement(By.className("_up0kwni "))
現在,讓我們看一下在定位器中按“類名”查找元素的代碼:
import java.util.concurrent.TimeUnit;import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver;public class ClassNameLocator {public static void main(String[] args) {// TODO Auto-generated method stubSystem.setProperty("webdriver.chrome.driver", ".\\ChromeDriver\\chromedriver.exe");WebDriver driver=new ChromeDriver();driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);driver.manage().window().maximize();//Opening the air bnb home pagedriver.get("https://www.airbnb.co.in/");//Locating location field for the search form via class name driver.findElement(By.className("_up0kwni")).sendKeys("Goa", Keys.ENTER);//Locating check-in field for the search form via class name driver.findElement(By.className("_14fdu48d")).click();//Locating the date 12th June for check-in fielddriver.findElement(By.className("_1wh4xpp1")).click();//closing the driverdriver.quit();}}很簡單,不是嗎? 在本Java Selenium教程的下一部分中,我們將學習如何處理Selenium中的類名定位器的常見異常。
Selenium中類名定位器的最常見異常之一
在Selenium中使用類名稱定位器時,您可能會遇到的另一個有趣的事實和一個普遍的錯誤是:
我敢肯定,您可能遇到了此錯誤。 讓我們嘗試在Facebook注冊頁面的以下代碼片段中納入此方案。 以下是Facebook“名字”字段的DOM結構,其類別名稱屬性在下面突出顯示:
引用的代碼段,嘗試使用Selenium中的類名稱定位器訪問名字字段:
import java.util.concurrent.TimeUnit;import org.openqa.selenium.By; import org.openqa.selenium.Keys; import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver;public class ClassNameLocator {public static void main(String[] args) throws InterruptedException {// TODO Auto-generated method stubSystem.setProperty("webdriver.chrome.driver", ".\\ChromeDriver\\chromedriver.exe");WebDriver driver=new ChromeDriver();driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);driver.manage().window().maximize();//Opening the air bnb home pagedriver.get("https://www.facebook.com/");//Locating by firstname via class name driver.findElement(By.className("inputtext _58mg _5dba _2ph-")).sendKeys("Sadhvi");//closing the driverdriver.quit();}}下面引用了控制臺錯誤:
如何處理這個錯誤? 好吧,Selenium將此視為復合類,這意味著通過空格標記了多個類。 因此,任何帶有空格的類名稱都將被視為兩個或三個或更多類。
在這種情況下,標記為“輸入文本_58mg _5dba _2ph-”的此類名稱包含三個空格,從而使其成為三個不同的類別。 因此, Selenium提到了錯誤,指出它無法一起找到多個類 。 在這種情況下,您可以選擇使用Selenium中的CSS選擇器或使用Selenium中的XPath使用類名attribute來定位元素。 以下是參考代碼段:
import java.util.concurrent.TimeUnit;import org.openqa.selenium.By; import org.openqa.selenium.Keys; import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver;public class ClassNameLocator {public static void main(String[] args) throws InterruptedException {// TODO Auto-generated method stubSystem.setProperty("webdriver.chrome.driver", ".\\ChromeDriver\\chromedriver.exe");WebDriver driver=new ChromeDriver();driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);driver.manage().window().maximize();//Opening the facebook home pagedriver.get("https://www.facebook.com/");//Locating by firstname via class name driver.findElement(By.xpath("//input[@class='inputtext _58mg _5dba _2ph-']")).sendKeys("Sadhvi");//closing the driverdriver.quit();}}當多個元素共享同一個類名時,如何定位一個元素?
現在,您知道何時使用類名以及何時不能使用類名。 但是,您有沒有想過當多個元素共享同一個類名時的情況? 您如何應對這種情況? 這又是一回事 ,您只需使用findElements關鍵字即可實現。 您需要做的就是,使用findElements關鍵字找到具有該類名稱的所有元素,并通過索引遍歷所需的元素類名稱。 話雖如此,我寧愿建議尋找一種替代該元素的替代方法。 由于其斷裂的趨勢會很高,并可能導致錯誤。
Selenium中具有相似類名的多個元素的類名定位器示例
讓我們考慮下面的示例,重點介紹上面的場景。 在這種情況下,我們考慮使用LinkedIn注冊頁面,其中所有字段共享相同的類名。 在這種情況下,我們需要注意兩個重要事項:
- 如果否,則定義索引,默認情況下,selenium會選擇該類名稱遇到的第一個元素。 在下面的代碼段中,它將找到第一個元素,即名字:
注意:請查看類名稱,在本例中為cell-body-textinput,因為它沒有用空格標記,因此被視為單個類。
- 使用索引查找具有相同類名的不同元素。 下面的參考代碼段:
控制臺輸出:
賓果,你現在該走了。 這都是關于Selenium中的類名定位器的。
我們從硒中學到了什么?
好了,這就是今天針對Selenium中CSS定位器的Selenium Java教程的全部內容。 我相信到目前為止,您已經對如何有效使用Selenium中的類名定位器有了深刻的了解。 我們在Selenium中實現類名定位器時遇到了最常見的錯誤。 我們還學習了如何克服多個元素共享相似類名的復雜情況。 Adios,測試愉快!
翻譯自: https://www.javacodegeeks.com/2019/06/selenium-java-tutorial-class-name-locator-selenium.html
總結
以上是生活随笔為你收集整理的Selenium Java教程– Selenium中的类名定位器的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Stomp-Spring服务器端的Web
- 下一篇: 电脑桌面备忘录提醒软件(可以在电脑桌面记