【问题标题】:How to get the value using XPath and using Parameter?如何使用 XPath 和使用参数获取值?
【发布时间】:2014-11-15 19:03:25
【问题描述】:

我正在使用 c#、SpecFlow 和 Selenium 进行 BDD 测试。 我想创建单击按钮的方法。此按钮的名称应取自参数(字符串 p0),如下所示:

    [Given(@"I click (.*) button")]
    public void GivenIClickButton(string p0)
    {
        //Find button p0 and Click on it
    }

使用 XPath 我只能这样做:

driver.FindElement(By.XPath("//a[contains(.,'Get Started Now!')]")).Click();

但我想做更多这样的事情:

driver.FindElement(By.Name(p0)).Click();

driver.FindElement(By.XPath("//a[contains(.,p0)]")).Click();

我不知道如何使它工作:(

【问题讨论】:

    标签: c# selenium xpath selenium-webdriver specflow


    【解决方案1】:

    您想在 XPath 查询中包含参数的字符串内容吗?

    这应该可行:

    var xPathQuery = String.Format("//a[contains(.,'{0}')]", p0);
    driver.FindElement(By.XPath(xPathQuery)).Click();
    

    【讨论】:

    • 是的,完全正确。现在我明白了,这很容易:) 非常感谢!
    • @dudziakm 那为什么不accept the answer呢?
    • 完成。问完之后我得等15分钟,我想
    【解决方案2】:

    可能晚了,但是这种构建表达式的方式容易受到 Xpath 注入的影响,寻找 Xpath 预编译查询(准备语句兄弟:))。

    它们为您提供安全和性能优势。

    【讨论】:

    • 您应该使用准备好的语句提供解决此问题的答案,而不是仅仅告诉他们该做什么。
    猜你喜欢
    • 2012-09-06
    • 2021-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-09
    • 1970-01-01
    • 2016-05-30
    • 1970-01-01
    相关资源
    最近更新 更多