加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – WebElement.equals()方法如何检查平等?

发布时间:2020-12-15 02:16:12 所属栏目:Java 来源:网络整理
导读:我有超过1个指向web元素的XPath,我想确定两个元素是否相同(即,如果我在两个Web元素上执行动作sendKeys()或click(),则操作将在同一Web元素上执行)目前我正在使用以下方法检查相等性: WebElement element1 = driver.findElement(By.xpath(".//*[@id='ap_email
我有超过1个指向web元素的XPath,我想确定两个元素是否相同(即,如果我在两个Web元素上执行动作sendKeys()或click(),则操作将在同一Web元素上执行)目前我正在使用以下方法检查相等性:

WebElement element1 = driver.findElement(By.xpath(".//*[@id='ap_email']"));
    WebElement element2 = driver.findElement(By.xpath(".//*[@type='email']"));


    System.out.println(element1.equals(element2));

只要两个XPath指向同一个元素,这将返回true.

但是,我不确定该方法如何确定相等性?在这种情况下,两个网络元素实际上是否相同(即,对它们执行的任何操作都将在同一个网络元素上执行)但方法显示它们不同?或相反亦然?

我正在尝试开发一种万无一失的方法来确定两个web元素的相等性.

我正在使用Java和Selenium.

谢谢

解决方法

However,I am unsure how the method determines equality?

驱动程序为文档中每个遇到的HTMLElement对象生成一个引用,并始终为HTMLElement对象返回相同的引用.

此引用存储在客户端的WebElement.id属性中,与定位器使用的id属性无关.

因此,要确定两个WebElement之间的相等性,客户端只需测试存储在WebElement.id中的引用.

And are there any circumstances where the two web elements are in fact the same but the method shows they are different?

从技术上讲,它永远不会发生,如果是这样的话,这将是一个严重的问题.

但这取决于你的意思.例如,按钮在两个不同时刻看起来相同,但可能已经被生成新引用的相同按钮所取代.重新加载页面或某些部分时就是这种情况:

driver.get("https://stackoverflow.com/");

  WebElement elementA = driver.findElement(By.cssSelector("#logo"));
  WebElement elementB = driver.findElement(By.cssSelector("#logo"));

  boolean same1 = elementA.equals(elementB);  // return true

  elementB.click();  // reloads the page,all the previous web element are now obsolete

  WebElement elementC = driver.findElement(By.cssSelector("#logo"));

  boolean same2 = elementA.Equals(elementC);  // return false

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读