【问题标题】:Method to Return Full User Name [closed]返回完整用户名的方法[关闭]
【发布时间】:2021-07-07 02:31:34
【问题描述】:

我尝试创建标签的 webelements 列表并遍历它们,但该方法需要适应调用方法时传递的不同值。

它应该看起来像这样

public String getName(WebDriver driver, String fieldName)
{
  String fullName= null;
  .
  .
  .
  return fullName;
} 

【问题讨论】:

  • 您好,您能解释一下小文本是什么意思吗?如果可能的话,请在表格中举一个小文本的例子。
  • @Abhishek Dhoundiyal '例如(mm/dd/yyyy)'

标签: java selenium automated-tests qa


【解决方案1】:

您必须找到父元素两次才能从所需的输入字段中获取标签“小”。

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)

【讨论】:

    【解决方案2】:

    我不明白你的问题,但我假设你想要输入字段中的小写单词。希望下面的代码对你有所帮助。

    public String getSmallTxt(WebDriver driver, String fieldName) {
            StringBuilder smallTxt = new StringBuilder();
            for (int i = 0; i < fieldName.length(); i++) {
                char ch = fieldName.charAt(i);
                smallTxt.append(ch >= 'a' && ch <= 'z' ? (char) (ch ) : "");
            }
            if(smallTxt.length()==0) {
                return "No text found ";
            }else {
                  return smallTxt.toString();
            }
        }
    

    【讨论】:

    • '例如(mm/dd/yyyy)' 对我来说似乎很清楚 :-)
    【解决方案3】:
    Can you try the below code and check if it helps
    
    
    public static List<String> getSmallText(String locator) {
        List<WebElement> element = driver.findElements(By.tagName(locator));
        List<String> str = new ArrayList<String>();
        if (element.size() == 0) {
            System.out.println("No text found");
        } else {
            for (WebElement e : element) 
                str.add(e.getText());
            return (str);
        }
        return str;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-10-02
      • 2014-01-30
      • 2021-11-04
      • 2016-02-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多