java - Method to Return Full User Name
问题描述
I tried to create list of webelements of the labels and iterate through them but the method needs to accommodate different values passed when method is being called.
It should look something like this
public String getName(WebDriver driver, String fieldName)
{
String fullName= null;
.
.
.
return fullName;
}
解决方案
您必须两次找到父元素才能从所需的输入字段中获取标签“小”。
package selenium;
import java.util.List;
import org.openqa.selenium.By;
import org.openqa.selenium.JavascriptExecutor;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
public class NatureValue extends WebDriverBase {
public static void main(String[] args) {
WebDriver driver = startChromeDriver();
driver.get("https://qa.employeenavigator.com/benefits/Account/Register");
String[] fieldNames = {"FirstName", "LastName", "CompanyIdentifier", "Last4OfSSN", "BirthDate"};
for (String fieldName: fieldNames) {
System.out.println("Field named '" + fieldName + "' has text: " + getSmallTxt(driver, fieldName));
}
driver.quit();
}
public static String getSmallTxt(WebDriver driver, String fieldName) {
String smallTxt = null;
List<WebElement> fieldElements = driver.findElements(By.name(fieldName));
if (fieldElements.size() > 0) {
WebElement fieldElement = fieldElements.get(0);
WebElement parentElement = getParentElement(driver, fieldElement);
WebElement parentParentElement = getParentElement(driver, parentElement);
List<WebElement> smallTxtElements = parentParentElement.findElements(By.tagName("small"));
if (smallTxtElements.size() > 0) {
WebElement smallTxtElement = smallTxtElements.get(0);
smallTxt = smallTxtElement.getText();
}
}
if (smallTxt == null) {
smallTxt = "No text found";
}
if (smallTxt.length() < 1) {
smallTxt = "No text found";
}
return smallTxt;
}
public static WebElement getParentElement(WebDriver driver, WebElement element) {
JavascriptExecutor javascriptExecutor = (JavascriptExecutor) driver;
WebElement parentElement = null;
parentElement = (WebElement) javascriptExecutor.executeScript("return arguments[0].parentNode;", element);
return parentElement;
}
}
输出:
Starting ChromeDriver 91.0.4472.101 (af52a90bf87030dd1523486a1cd3ae25c5d76c9b-refs/branch-heads/4472@{#1462}) on port 26426
Only local connections are allowed.
Please see https://chromedriver.chromium.org/security-considerations for suggestions on keeping ChromeDriver safe.
ChromeDriver was started successfully.
Čvc 07, 2021 8:51:23 DOP. org.openqa.selenium.remote.ProtocolHandshake createSession
INFO: Detected dialect: W3C
Field named 'FirstName' has text: No text found
Field named 'LastName' has text: No text found
Field named 'CompanyIdentifier' has text: (provided by HR)
Field named 'Last4OfSSN' has text: (Last 4 Digits of SSN / ID)
Field named 'BirthDate' has text: (mm/dd/yyyy)
推荐阅读
- excel - 比较两个不同的表并列出缺失值
- regex - 如何使用 Perl 正则表达式匹配 S10101010 类型的字符串?
- r - 使用循环创建对象,该循环对 r 中的列表进行子集化
- python - 使用除 Python 之外的 Try 的多用户输入
- d3.js - d3:如何独立于背景拖动线条元素
- ios - 为什么使用 NSLayoutConstraint.activate 比 .isActive = true 更有效?
- java - 将 Gsons JsonNull 对象转换为枚举
- sql - 可以在 VIEW 中使用 String_Split 吗?
- pyspark - 在 Databricks 上使用带有火花流 (pyspark) 的检查点的 OOM 和数据丢失问题
- algorithm - 查找完全二叉树的不相关分区