# 9k。 WebDriver – 定位元素:第 2 部分(按 className,linkText,partialLinkText) > 原文: [https://javabeginnerstutorial.com/selenium/9k-webdriver-locating-elements-2/](https://javabeginnerstutorial.com/selenium/9k-webdriver-locating-elements-2/) 朋友! 让我们今天更深入地研究一下定位元素的更多策略。 在这篇文章中,我们将重点放在 * 班级名称 * LinkText * partialLinkText ### *按类别名称定位* 类名称不过是用于设置 Web 元素样式的 CSS 类名称。 重要的是要注意页面上的许多 Web 元素可能具有相同的 className。 在这种情况下,可以使用 findElements 方法,并且可以为结果建立索引。 请参考通过 tagName 策略定位(解释以及[先前文章](https://javabeginnerstutorial.com/selenium/9j-webdriver-locating-elements-1/)中提供的示例)。 如果我们有一个具有唯一 className 的元素,或者被测元素是该页面中使用该 className 的第一个元素,则 findElement 将执行此任务。 ***语法:*** *driver.findElement(By.className(“ element_class_name”));* ***说明:*** 找到具有匹配 CSS 类名称的第一个元素。 ***示例:*** 让我们找到 gmail 帐户创建页面的“手机”文本框。 右键单击文本框,然后选择检查元素以获取相应的 HTML 代码。 我们可以看到“ input”标签包含 *class =“ i18n_phone_number_input-inner_input”* 。 让我们继续使用此类名称查找“手机”文本框,以进行进一步的交互。 *代码:* ```java driver.findElement(By.className("i18n_phone_number_input-inner_input")); ``` ![Locating by ClassName](img/35fbb3061abb7c05aa82266e0c5f1ebf.png) ### *通过 linkText* 定位 当您想与超链接进行交互时,linkText 非常有用。 使用该链接在网页上显示的实际文本。 那有多容易? ***语法:*** *driver.findElement(By.linkText(“ hyperlink_text”));* ***说明:*** 找到具有匹配链接文本的第一个超链接。 ***示例:*** 让我们找到在 gmail 帐户创建页面底部提供的超链接“了解更多信息”。 *Code:* ```java driver.findElement(By.linkText("Learn more")); ``` ![Locating by LinkText](img/1a2edf43e534f498a4f3275dd5f6e4f3.png) ### *通过 partialLinkText* 定位 PartialLinkText 也用于与超链接进行交互,与 linkText 定位策略非常相似。 此方法不提供部分完整链接,而是提供链接显示的完整文本。 因此,可以将链接文本的一部分作为匹配条件。 ***语法:*** *driver.findElement(By.partialLinkText(“ hyperlink_partial_text”)));* ***说明:*** 找到第一个超链接,其中**包含**指定的部分链接文本。 ***示例:*** 让我们在 Gmail 帐户创建页面的“选择用户名”文本框下方找到超链接“我更喜欢使用我当前的电子邮件地址” -text,**'我更喜欢'**。 *Code:* ```java driver.findElement(By.partialLinkText("I prefer to")); ``` ![Locating by partialLinkText](img/6a482332c4ee93dfee4745bc0fa27f77.png) ## 总体图片 让我们看一个实现上述三种定位器类型的测试用例。 #### *场景* 1. 打开 Firefox 浏览器。 2. 导航到 Google 帐户创建页面 3. 通过 className 找到手机文本框 4. 输入“ 9496543210”作为手机号码 5. 通过 linkText 找到“了解详情”超链接 6. 链接超链接 7. 找到“我更喜欢使用当前的电子邮件地址”超链接和 partialLinkText 8. 将完整的链接文本打印到控制台进行验证 此方案的 JUnit 代码是, ```java import java.util.concurrent.TimeUnit; import org.junit.After; import org.junit.Before; import org.junit.Test; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.firefox.FirefoxDriver; public class ElementLocatorTest2 { //Declaring variables private WebDriver driver; private String baseUrl; @Before public void setUp() throws Exception{ // Selenium version 3 beta releases require system property set up System.setProperty("webdriver.gecko.driver", "E:\\Softwares\\" + "Selenium\\geckodriver-v0.10.0-win64\\geckodriver.exe"); // Create a new instance for the class FirefoxDriver // that implements WebDriver interface driver = new FirefoxDriver(); // Implicit wait for 5 seconds driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS); // Assign the URL to be invoked to a String variable baseUrl = "https://accounts.google.com/SignUp"; } @Test public void testPageTitle() throws Exception{ // Open baseUrl in Firefox browser window driver.get(baseUrl); // Locate Mobile phone text box by className and // assign it to a variable of type WebElement WebElement mobileNum = driver.findElement(By.className("i18n_phone_number_input-inner_input")); // Clear the default placeholder or any value present mobileNum.clear(); // Enter/type the value to the text box mobileNum.sendKeys("9496543210"); // Locate 'Learn more' hyperlink by link text WebElement link1 = driver.findElement(By.linkText("Learn more")); // Click on 'Learn more' link1.click(); // Locate hyperlink by partial link text WebElement link2 = driver.findElement(By.partialLinkText("I prefer to")); // Printing the complete link text to console System.out.println("Complete link text: " + link2.getText()); } @After public void tearDown() throws Exception{ // Close the Firefox browser driver.close(); } } ``` *执行结果* 注释清楚地提供给每一行代码,因此很容易解释。 ![Console output](img/ba6b69d34397c93cbfa5d3246cc4c6bb.png) 在 JUnit 窗格中,绿色条显示测试用例已成功执行。 输出将打印到控制台,以确认仅提供子文本“我更喜欢”作为 partialLinkText,即可访问“我更喜欢使用当前的电子邮件地址”超链接。 ![Output](img/ec0d674929c66c5314ee6de72154ea7c.png) 该图像的左半部分显示输入的电话号码,右半部分显示在 Firefox 浏览器中执行的最终输出。 点击“了解详情”链接后,我们将重定向到相应的页面。 是时候再休息一次了。 在接下来的文章中,准备好消化更多的信息,因为我们将研究两种有效的元素定位技术。 享受这一天! ###### 下一篇文章 ##### [9l。 WebDriver – 定位元素:第 3a 部分(由 cssSelector 提供)](https://javabeginnerstutorial.com/selenium/9l-webdriver-locating-elements-3a/ "9l. WebDriver – Locating elements: Part 3a (by cssSelector)")