单击硒中具有相同标签的按钮

方案:我有4个按钮,每个按钮具有相同的标签,但具有不同的“值”,如何选择相同标签但具有特定值的某个按钮?


对于其他3个按钮,它们与上面的按钮相同,但仅文本不同,例如Detached是Semi-Detached,而值=“ 129”。


例如,如何选择上述值为128的按钮?


在单击某个按钮之前,这些按钮也不可见。我的脚本将始终单击该按钮以使这些按钮可见,但即使如此,我仍然无法通过右键单击并将它们复制到代码中的方式使用简单的ID / CSSSelector / Xpath来选择它们。


iv尝试使用此:


[2]/label[@for='SelectedTypeOfPropertySecond']

但是没有成功。


检查:


<div class="form-group mg-between property-type-two-follow-up" rdg-loading-indicator="suppress" style="">

<div class="row" data-toggle="buttons">

        <div class="col-xs-6 col-md-4 btn-group">

            <label for="SelectedTypeOfPropertySecond" class="btn btn-default btn-block  ">

                <input data-val="true" data-val-number="The field SelectedTypeOfPropertySecond must be a number." id="SelectedTypeOfPropertySecond" name="SelectedTypeOfPropertySecond" type="radio" value="127">

                Semi-Detached

            </label>

        </div>

        <div class="col-xs-6 col-md-4 btn-group">

            <label for="SelectedTypeOfPropertySecond" class="btn btn-default btn-block  ">

                <input id="SelectedTypeOfPropertySecond" name="SelectedTypeOfPropertySecond" type="radio" value="128">

                Detached

            </label>

        </div>

        <div class="col-xs-6 col-md-4 btn-group">

            <label for="SelectedTypeOfPropertySecond" class="btn btn-default btn-block  ">

                <input id="SelectedTypeOfPropertySecond" name="SelectedTypeOfPropertySecond" type="radio" value="129">

                Terraced

            </label>

        </div>

        <div class="col-xs-6 col-md-4 btn-group">

            <label for="SelectedTypeOfPropertySecond" class="btn btn-default btn-block  ">

                <input id="SelectedTypeOfPropertySecond" name="SelectedTypeOfPropertySecond" type="radio" value="130">

                Link-Detached

            </label>

        </div>



青春有我
浏览 141回答 2
2回答

ITMISS

您是否已按名称和值尝试过XPath选择器?就像是:// input [@ name ='SelectedTypeOfPropertySecond'和@ value ='128']另外,Selenium不会单击隐藏的元素。在执行了显示这些元素的任何操作之后,请尝试引入睡眠,例如Thread.Sleep(1000),以便为显示这些元素留出一些时间。编辑:我同意下面的评论,等待固定的时间不是最优雅的解决方案。您可以使用WebDriverWait,如下所示:var&nbsp;wait&nbsp;=&nbsp;new&nbsp;WebDriverWait(driver,&nbsp;new&nbsp;TimeSpan(0,&nbsp;0,&nbsp;15)); var&nbsp;element&nbsp;=&nbsp;wait.Until(d&nbsp;=>&nbsp;d.FindElement(By.XPath("//input[@name='SelectedTypeOfPropertySecond'&nbsp;and&nbsp;@value='128']")).Displayed);我在那里使用了15秒的超时时间,但是如果您希望元素显示超过15秒,则可以使用更高的值。编辑2:正如Metareven在他的评论中所说,您可以使用以下行定义获取驱动程序实例时的15秒隐式等待,因此只需定义一次即可:driver.Manage().Timeouts().ImplicitWait&nbsp;=&nbsp;new&nbsp;TimeSpan(0,&nbsp;0,&nbsp;15);当您寻找控件时(如果尚不可用),它将最多等待15秒。

子衿沉夜

您应该能够使用如下所示的标准CSS选举人:"[value=<your&nbsp;value>]"另外,如果您需要单击按钮以显示这些元素,只需记住在硒会话中设置隐式等待值,以确保它将等待0秒钟以上才能显示该元素
打开App,查看更多内容
随时随地看视频慕课网APP