ee *_*pse 5 java selenium xpath
我有超过 1 个 XPath 指向一个 web 元素,我想确定两个元素是否等效(即,如果我在两个 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));
Run Code Online (Sandbox Code Playgroud)
只要两个 XPath 都指向同一个元素,这将返回 true。
但是,我不确定该方法如何确定相等性?是否存在两个 Web 元素实际上相同的情况(即,对它们执行的任何操作都将在同一个 Web 元素上执行)但方法显示它们不同?或相反亦然?
我正在尝试开发一种万无一失的方法来确定两个 Web 元素的相等性。
我正在使用 Java 和 Selenium。
但是,我不确定该方法如何确定相等性?
驱动程序HTMLElement为文档中遇到的每个对象生成一个引用,并始终为HTMLElement对象返回相同的引用。
该引用存储在WebElement.id客户端的属性中,与定位器使用的 id 属性无关。
因此,要确定两者之间的相等性WebElement,客户端只需测试存储在WebElement.id.
是否存在两个 Web 元素实际上相同但方法显示它们不同的情况?
从技术上讲,不,这种情况永远不会发生,如果是这种情况,那将是一个严重的问题。
但这在某种程度上取决于您的意思。例如,一个按钮在两个不同时刻可能看起来相同,但可能已被相同的按钮替换,从而生成新的引用。当页面或某些部分重新加载时就会出现这种情况:
driver.get("http://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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6469 次 |
| 最近记录: |