【问题标题】:Filtering span or mark text XPATH with Selenium使用 Selenium 过滤跨度或标记文本 XPATH
【发布时间】:2021-09-08 08:15:18
【问题描述】:

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

按照以下代码并手动递增计数器以获取列表中的最后一项。
好像'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;
        }
    }
} 

【问题讨论】:

    标签: c# selenium automation salesforce ui-automation


    【解决方案1】:

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

    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);
    

    【讨论】:

    • 不完全是.. 我有 Span 及其子标记标签。 mark 标签包含输入的搜索字符串“Rush Your File”,span 标签包含列表项的剩余文本。如果您看到上面的图像,请标记保持''Rush Your File' 和 span 保持'8 AE LO'。有了这个我仍然得到三个结果 //ul/li//span[text()='']//mark as span text of null is not filtering..这是什么意思> span[text()= “{0}”]
    • 使用 span[text()='{0}'] 它检索零结果。
    猜你喜欢
    • 1970-01-01
    • 2018-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-13
    • 1970-01-01
    • 2017-09-27
    相关资源
    最近更新 更多