方案:我有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>
2 回答
ITMISS
TA贡献1871条经验 获得超8个赞
您是否已按名称和值尝试过XPath选择器?就像是:
// input [@ name ='SelectedTypeOfPropertySecond'和@ value ='128']
另外,Selenium不会单击隐藏的元素。在执行了显示这些元素的任何操作之后,请尝试引入睡眠,例如Thread.Sleep(1000),以便为显示这些元素留出一些时间。
编辑:我同意下面的评论,等待固定的时间不是最优雅的解决方案。您可以使用WebDriverWait,如下所示:
var wait = new WebDriverWait(driver, new TimeSpan(0, 0, 15)); var element = wait.Until(d => d.FindElement(By.XPath("//input[@name='SelectedTypeOfPropertySecond' and @value='128']")).Displayed);
我在那里使用了15秒的超时时间,但是如果您希望元素显示超过15秒,则可以使用更高的值。
编辑2:正如Metareven在他的评论中所说,您可以使用以下行定义获取驱动程序实例时的15秒隐式等待,因此只需定义一次即可:
driver.Manage().Timeouts().ImplicitWait = new TimeSpan(0, 0, 15);
当您寻找控件时(如果尚不可用),它将最多等待15秒。
子衿沉夜
TA贡献1828条经验 获得超3个赞
您应该能够使用如下所示的标准CSS选举人:
"[value=<your value>]"
另外,如果您需要单击按钮以显示这些元素,只需记住在硒会话中设置隐式等待值,以确保它将等待0秒钟以上才能显示该元素
- 2 回答
- 0 关注
- 140 浏览
添加回答
举报
0/150
提交
取消