java - 如何使用 Selenium / Java 找到这个元素?
问题描述
我正在尝试在使用 Selenium 和 Java 构建的测试用例中查找并单击一个元素。在 Firefox 中,元素具有以下属性:
OuterHTML: <text transform="translate(69,0)" text-anchor="middle" fill="#fff" style="font-family: Times New Roman; font-size: 32px; font-style: italic; font-weight: bold;" dominant-baseline="central">?</text>
InnerHTML: ?
CSS Selector: g.node:nth-child(4) > g:nth-child(1) > g:nth-child(4) > text:nth-child(2)
CSS path: html body.firefox div.gwt-PopupPanel.map-overlay-popup.fade-in div.popupContent div div.form-row.margin-0.ps.ps--theme_default div#layer-builder-svg-container.padding-50.padding-bottom-100 svg g.node g g text
XPath: /html/body/div[8]/div/div/div/div[1]/svg/g[3]/g/g[3]/text
我尝试过使用以下内容:
driver.findElements(By.xpath("//text"));
driver.findElements(By.xpath("/html/body/div/div/div/div/div/svg/g/g/g/text"));
driver.findElements(By.xpath("/html/body/div[8]/div/div/div/div[1]/svg/g[3]/g/g[3]/text"));
都没有成功。谁能建议我找到这个元素的方法?
这是我的最终解决方案:
Common.myPrint(thisClass + " clickQuestionMark...");
String textToFind="translate(69,0)";
List<WebElement> elements = driver.findElements(By.xpath("//*[name()=\"text\"]"));
Common.myPrint(thisClass + " elements count: " + elements.size());
for (WebElement element : elements) {
// select an element
String text = Common.retryingGetAttributes(element, driver);
if (text != null) {
text = text.trim();
Common.myPrint(thisClass + " text: " + text);
if (text.contains(textToFind)) {
Common.myPrint(thisClass + " element found.");
Actions actions = new Actions(driver);
Common.myPrint(thisClass + " click on element.");
actions.moveToElement(element).click().build().perform();
Common.myPrint(thisClass + " click performed on element. " );
return true;
}
}
}
return false;
解决方案
您可以轻松地为此使用 CSS 选择器。只要可能,我更喜欢 CSS 选择器而不是 XPath。
driver.findElements(By.cssSelector("text"));
推荐阅读
- php - 字符串到日期或日期和时间
- spring-mvc - 使用 java spring boot 和 open fire server 构建聊天应用程序
- android - 如何获取所有连接网络的 BSSID?
- html - HTML5/CSS3 - 浮动问题
- ruby - 为什么这个字符串值被转换成一个数组?
- hyperledger-fabric - Hyperledger Fabric:创建通道配置包时出错
- batch-file - windows中没有管理员权限的进程命令行
- vba - 如果单元格不为空,我需要使用 VBA 更改单元格格式
- nosql - 合并 - 谷歌云数据存储中的 upsert/delete
- ruby-on-rails - Rails 由于关联而无法保存后在表中创建条目