如何使用Selenium/Java查找此元素?

如何使用Selenium/Java查找此元素?,java,selenium-webdriver,Java,Selenium Webdriver,我试图在使用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=

我试图在使用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
一切都没有成功。有人能给我一个找到这个元素的方法吗

这是我的最终解决方案:

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;

正确的工作答案来自@Andersson:Try XPath/*[name=text]–Andersson 1小时前

正确的工作答案来自@Andersson:Try XPath/*[name=text]–Andersson 1小时前

您可以同样轻松地使用CSS选择器。只要可能,我更喜欢CSS选择器而不是XPath

driver.findElements(By.cssSelector("text"));

您也可以很容易地使用CSS选择器来实现这一点。只要可能,我更喜欢CSS选择器而不是XPath

driver.findElements(By.cssSelector("text"));

尝试XPath/*[name=text]使用driver.findElement而不是driver.findElement,它返回一个WebElements数组我对WebElements列表很满意谢谢@AmitThanks@Andersson,你的答案行得通。我不明白为什么这里没有显示为答案。请尝试XPath/*[name=text]使用driver.findElement而不是driver.findElement,它返回一个WebElement数组我对WebElement列表非常满意谢谢@AmitThanks@anderson,您的答案很有效。我不明白为什么这里没有给出答案。JeffC-刚刚测试-你的方法和我选择的方法一样有效。JeffC-刚刚测试-你的方法和我选择的方法一样有效。