当前位置: 首页 > 知识库问答 >
问题:

包含Selenium WebDriver Java文本的Xpath无法识别Web元素

薛欣德
2023-03-14

我使用Selenium WebDriver与Java。

下面是我的html代码:

<div id="servicetype-pp" class="z-combobox-popup " style="display: none; width: auto;">
    <ul id="servicetype-cave" class="z-combobox-content">
        <li id="zk_comp_140" class="z-comboitem">
        <li id="zk_comp_141" class="z-comboitem">
            <span class="z-comboitem-image"></span>
            <span class="z-comboitem-text">Bill Generation Service</span>
        </li>
        <li id="zk_comp_142" class="z-comboitem">
        <li id="zk_comp_143" class="z-comboitem">
        <li id="zk_comp_144" class="z-comboitem">
        <li id="zk_comp_145" class="z-comboitem">
        <li id="zk_comp_146" class="z-comboitem">
        <li id="zk_comp_147" class="z-comboitem">
        <li id="zk_comp_148" class="z-comboitem">
        <li id="zk_comp_149" class="z-comboitem">
        <li id="zk_comp_150" class="z-comboitem">
    </ul>
</div>

我通过包含特定文本的xpath定义了一个WebElement。

//div[@id='servicetype-pp']//span[contains(text(),'Bill Generation Service')]

它不起作用。但是,当我用一个词搜索时,没有任何空格,它工作正常。

//div[@id='servicetype-pp']//span[contains(text(),'Bill')] or
//div[@id='servicetype-pp']//span[contains(text(),'Generation')] or 
//div[@id='servicetype-pp']//span[contains(text(),'Service')]

这似乎是空间的问题。

请帮助。

蒂亚。

共有2个答案

蒲魁
2023-03-14

其实你的

WebElement el = driver.findElement(By.id("servicetype-pp"));
el = (WebElement)((JavascriptExecutor)driver).executeScript("arguments[0].style.display = 'block';return arguments[0]", el);

//Now you can find your desire element
WebElement spanElement = el.findElement(".//span[contains(text(),'Bill Generation Service')]");

//Now do your further steps with this element

编辑:-如果您正在获取NuSuchElementExcpetion,这意味着可见性不是问题,则此元素可能位于frameiframe中。如果是,您需要在找到以下元素之前切换该frameiframe

 driver.switchTo().frame("frame name or id");

// Now go to find element 
WebElement spanElement = driver.findElement(".//span[contains(text(),'Bill Generation Service')]");

魏硕
2023-03-14

您可以尝试使用normalize-space()

//div[@id='servicetype-pp']//span[contains(text()[normalize-space()], 'Bill Generation Service')]
 类似资料:
  • 我对硒很陌生。 我尝试构建一个测试来验证网页元素(小图标)是否显示在页面上。 因此,在我的类的顶部,我通过xpath定义了Web元素。 Xpath我在应用右键单击元素并单击检查后从检查中复制。 @通过(xpath=“//*[@id=”referrals“]/tbody/tr[2]/td[2]/div/img[2]”)私有WebElement链和twoarrowsicon查找; 然后在同一个类中,我

  • 我正在使用Selenium WebDriver从下拉列表中获取值。不幸的是,我无法获取它,因为我的代码无法识别xpath。 这是我的代码: 问题在于第1行(WebElement选择器)。在输出中,我得到如下结果: 线程“main”组织中出现异常。openqa。硒。InvalidSelectorException:无法计算xpath表达式“id('search”)/x:fieldset/x:tabl

  • 问题内容: 如果我搜索单个字符串,则效果很好: 但是我可以在下面的示例中有一个 or 语句吗? 问题答案: 在两个函数调用之间说 或使用函数使xpath不区分大小写

  • 我正在尝试根据其文本内容选择一个元素。我正在使用XPath来实现这一点。 我只是感到困惑,这应该有效吗? 我甚至会复制HTML代码: div元素内部有“通知”字样。那么为什么它不起作用。 转到Facebook上的此页面:https://www.facebook.com/settings 使用此chrome扩展通过xPath突出显示任何区域。

  • 我正在使用selenium在html页面上执行测试。我只能使用xpath来定位元素。我试图创建一个xpath,它允许我定位所有包含文本的div,这样我就可以用findElements保留这些WebElement的引用,不管它是什么,只要它不是空的。所以我有了这个xpath: //div[5]/div/div[2]

  • 问题内容: 如何识别包含本机方法实现的库文件? 例如 我在哪里可以找到实现的方法是什么? 问题答案: 通过谷歌快速搜索找到答案 恒定池 符号表cpp:符号表hpp 尚未找到识别本地实施/库的通用方法的答案