首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >XPath包含(text(),'string')不工作,但partialLinkText('sameString')工作

XPath包含(text(),'string')不工作,但partialLinkText('sameString')工作
EN

Stack Exchange QA用户
提问于 2022-04-12 17:37:03
回答 1查看 2.9K关注 0票数 0

我试图在Java上学习Selenium,但我无法理解xpath包含为什么找不到正确的元素。

这是整个案子:

代码语言:javascript
复制
@Test
public void test1_FluentWait() {
    driver.get("https://www.google.com");
    WebElement searchBar = driver.findElement(By.xpath("//input[contains(@name, 'q')]"));
    searchBar.sendKeys("Selenium", Keys.ENTER);

    Wait<WebDriver> fluentWait = new FluentWait<WebDriver>(driver)
            .withTimeout(Duration.ofSeconds(30))
            .pollingEvery(Duration.ofSeconds(5))
            .ignoring(NoSuchElementException.class);
    
    WebElement element = fluentWait.until(new Function<WebDriver, WebElement>() {
        @Override
        public WebElement apply(WebDriver w) {
            // WebElement ele = w.findElement(By.xpath("//*[contains(text(), 'Selenium - Health Professional')]")); // Doesn't work, no idea why
            WebElement ele = w.findElement(By.partialLinkText("Selenium - Health Professional")); // works
            // WebElement ele = w.findElement(By.xpath("//*[text()='Selenium - Health Professional']"));
            // WebElement ele = w.findElement(By.xpath("//*[contains(@href, 'Selenium-HealthProfessional')]")); // Found attribute, can't click
            if (ele.isEnabled()) {
                System.out.println("Found");
            }
            return ele;
        }
    });
    System.out.println(element.getText());
    // element.click();
}

下面是有争议的元素

因此,基本上,在找到这个元素时,只有partialLinkText才能工作。

代码语言:javascript
复制
WebElement ele = w.findElement(By.xpath("//*[contains(text(), 'Selenium - Health Professional')]")); // Doesn't work, no idea why
WebElement ele = w.findElement(By.partialLinkText("Selenium - Health Professional")); // works
WebElement ele = w.findElement(By.xpath("//*[text()='Selenium - Health Professional']"));

包含text()打印“查找”,但返回元素的getText()打印空字符串。单击()引发ElementNotInteractableException

案文()=“.”抛出NoSuchElementException

partialLinkText返回元素并允许单击()

我做错了什么?这里有什么问题?我如何防止这种情况,或知道将来使用哪一种findElement?

EN

回答 1

Stack Exchange QA用户

回答已采纳

发布于 2022-04-15 04:44:40

有可能会发现多个与xpath条件匹配的异常。找到它的一种方法是在xpath中使用findElements并检查列表的计数。

当我们使用findElement时,会返回第一个匹配,这可能是一个不可行的元素或链接。

当您使用partialLinkText时,它知道它必须找到一个链接并与部分文本匹配。

请检查一下这个。

希望能帮上忙。

票数 0
EN
页面原文内容由Stack Exchange QA提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://sqa.stackexchange.com/questions/49995

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档