微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用 Selenium 过滤跨度或标记文本 XPATH

如何解决使用 Selenium 过滤跨度或标记文本 XPATH

搜索框具有 Span 自动完成文本并带有标记为子属性

enter image description here

enter image description here

按照以下代码手动递增计数器以获取列表中的最后一项。
好像'rush Your File'在列表中的位置将来会发生变化,这个脚本就会失败。请提出更好的处理方法

sendKeys(caseInput,"rush Your File");
List<IWebElement> elementList = new List<IWebElement>();
elementList = DriverManager.driver.FindElements(By.XPath("//ul/li//span[text()='']//mark")).ToList();
int cntt = 0;
foreach (IWebElement element in elementList)
{
    if (element.Text == componentName)
    {
        cntt = cntt + 1;
        if (cntt == elementList.Count - 1)
        {
            JavaScriptEleClick(element);
            break;
        }
    }
} 

解决方法

如果我正确理解您的问题,自动完成列表中有几个建议的结果,而您想要使用与插入的输入文本完全匹配的结果。对吗?
如果是这样,您只需将文本元素等于插入的字符串,而不仅仅是包含它。
如下:

string inputText = "Rush Your File";
string elementXpath = String.Format("//ul/li//span[text()='{0}']//mark",inputText); 
sendKeys(caseInput,inputText);
element = DriverManager.driver.FindElement(By.XPath(elementXpath));
JavaScriptEleClick(element);

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。