java - 即使两个字符串完全相同,使用 xpath 的 selenium 中的字符串比较也会失败

标签 java css string selenium xpath

我正在使用关键字驱动和数据驱动的框架。 预期字符串来自 excel 表,实际字符串来自网页 即使两个变量打印完全相同的字符串,测试脚本仍然失败。 对于像“Resign”这样没有空格的字符串,它会“通过”,但对于像“Property Search”这样有空格的字符串,它会“失败” 下面是在失败之后打印 PASS 直到“Resign”的结果 忽略用于调试的数字。 我还在结果中包含了 xpath。

生成结果
通过.xpath: html/body/div[2]/div/div[2]/ul/li[1]/ul/li[1]
存在工具提示文本:- Revals
反击
1个 By.xpath: html/body/div[2]/div/div[2]/ul/li[1]/ul/li[2]/a[contains(text(),'Managed Client Accounts')]< br/> 存在工具提示文本:- 托管客户帐户
托管客户帐户
1
通过.xpath: html/body/div[2]/div/div[2]/ul/li[1]/ul/li[3]
存在工具提示文本:- 辞职
辞职
1
通过.xpath: .//[@id='dashboard-dropdown']/li[4]/a
工具提示文本:- 出色的 AR
出色的 AR
4
通过.xpath: .//
[@id='menuCreateDashboard']
存在工具提示文本:- 管理仪表板
管理仪表板
4
通过.xpath: html/body/div[2]/div/div[2]/ul/li[2]/a
存在工具提示文本:- 属性搜索
属性(property)搜索
4
通过.xpath: html/body/div[2]/div/div[2]/ul/li[3]/a
存在工具提示文本:- 税务资源数据库
税务资源数据库
4
通过.xpath: html/body/div[2]/div/div[2]/ul/li[4]/a[contains(text(),'Quick Links')]
存在工具提示文本:- 快速链接
快速链接
4
这是代码:

public String verify_Text(String locatorType, String value, String data){
       try
  {
     By locator;
     locator = locatorValue(locatorType, value);
     System.out.println(locator);
     WebElement element = driver.findElement(locator);


     //WebElement element = driver.findElement(By.cssSelector("#header>h1 a"));
    // Get tooltip text
    String toolTipText = element.getText();
    System.out.println("Tool tip text present :- " + toolTipText);
    System.out.println(data);

    // Compare toll tip text

         if(toolTipText.contentEquals(data))
           {
               System.out.println("1");
              return PASS;

           }



  }
  catch(Exception e)
  {
     LOG.error(Executor.currentSheet + ":" + e);
     getScreenshot("verify_Link", data);
     System.out.println("3");
     return FAIL;
  }
  getScreenshot("verify_Link", data);
  System.out.println("4");
  return FAIL;

最佳答案

对我有用的代码行

if(toolTipText.replaceAll("\\s+","").equalsIgnoreCase(data.trim().replaceAll("\\s+","")))

我在使用这段代码和调试后意识到从 excel 表传递的数据在两个字母之间有空格,而 webelement 工具提示上没有空格。但是我无法使用 inspect element 弄清楚它,因为它不可见. 在使用 replaceall("\s+","")

之前

通过.xpath: html/body/div[2]/div/div[2]/ul/li[1]/ul/li[5]/a 存在工具提示文本:- ManageDashboard 管理仪表板

在使用 replaceAll("\s+","") 并从来自 excel 工作表的数据中删除空间之后

通过.xpath: html/body/div[2]/div/div[2]/ul/li[1]/ul/li[5]/a 存在工具提示文本:- ManageDashboard 管理仪表板

关于java - 即使两个字符串完全相同,使用 xpath 的 selenium 中的字符串比较也会失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43683260/

相关文章:

javascript - 使用js生成时文本超出div

css - 如何在 CSS 中执行类似#Card%{ } 的操作

javascript - 如何在循环中添加上一个/下一个按钮?

string - VB6 相当于 string.IsNullOrEmpty

java - 字节码与 native 代码相比有什么优势?

java - Log4j2 创建不需要的日志文件

Java如何用长整数表示十进制数

c# - 如何在 Split ('' 上使用 Empty literal )

c++ _bstr_t 而不是使用字符串

java - 用 lambda 表达式替换匿名函数