点击IwebElement Selenium / C#的孩子

时间:2016-03-29 09:18:33

标签: c# selenium

我循环遍历Web元素列表,试图逐个点击每个元素。即使在调试模式下,我可以清楚地看到所需元素已作为参数传递给方法,但程序会不断单击列表中的第一个元素。

 private void CompleteForm(IWebElement element)
    {
        if (element == null) throw new ArgumentNullException(nameof(element));

        //Open the form and wait for it to load

        Wait.Until(
            ExpectedConditions.ElementToBeClickable(
                element.FindElement(By.XPath("//td/a[contains(@href, '/Shop')]")))).Click();
        Wait.Until(ExpectedConditions.ElementToBeClickable(By.Id("SaveShop")));

        //Store the original values
        GetTheValues();

        //Submit the save button
        Wait.Until(ExpectedConditions.ElementToBeClickable(By.Id("SaveShop"))).Click();
        Browser.Navigate().Back();
    }

1 个答案:

答案 0 :(得分:2)

我不确定你要做什么。但是当你致电element.FindElement(By.XPath("//td/a[contains(@href, '/Shop')]"))时,我假设你想在element的后代中进行相对搜索!?

如果是这样,您需要在.之前指定//,否则您将搜索整个文档。

固定代码:

Wait.Until(
    ExpectedConditions.ElementToBeClickable(
        element.FindElement(By.XPath(".//td/a[contains(@href, '/Shop')]")))).Click();