如何使用Selenium Webdriver使用C#在单个页面站点中查找元素?

时间:2017-10-25 15:36:19

标签: selenium selenium-webdriver webdriver

我需要一些帮助。我正在尝试编写一个webdriver C#代码来检查站点中的元素。但是,该网站是一个嵌入表单的单页网站,单击“下一步”后其内容会发生变化吗?

所以基本上当我单击Next时会出现新表单,我想进行验证以查看新表单中是否出现新元素。目前,我正在进行验证

 private By labelPageHeader = By.XPath("//form[1]/div[4]/label[text()='Welcome to the second form']");

    public bool IsNewForm()
    {
        return Elements.CheckElementIsVisible(_driver, labelPageHeader );
    }

当我这样做时,我得到错误:

  

无法在指定的超时期限内加载页面

当我不在单页网站工作时,这通常有效。

这是HTML。我试图在表单

中找到id =“alligator”
<form name="form1" method="post" action="./report-fraud-form.aspx?AspxAutoDetectCookieSupport=1" onsubmit="javascript:return WebForm_OnSubmit();" id="form1">

                            <div id="Step3" class="step">
                                <div id="alligator" class="input">

                                    <label for="alligator">Welcome to the second form
                                        <abbr title="This field is required">*</abbr></label>                                   

                                </div>
                                <input type="hidden" class="link" value="Step4" />
                            </div>
                            <!-- step3 ends -->

感谢您的帮助

1 个答案:

答案 0 :(得分:0)

你的XPath看起来很糟糕。由于提供了“id”属性,因此最佳做法是使用这些属性。鉴于HTML片段,该路径对我有用:

//form[@id='form1']//div[@id='alligator']/label

如果您真的在表单中寻找输入:

//form[@id='form1']//div[@id='alligator']/following-sibling::input