我对selenium很新,我只想知道如何选择带有以下html的单选按钮:
HTML代码:
<div ng-class={'selected':profile.info.carUnder20k==false||profile.info.carUnder20k=='false'}" ng-click="onChoice($event, 'carUnder20k', 'false');" data-field="carUnder20k" class="choice selected" style="">N</div>
抱歉,Multiline不起作用......
我想选择这个元素,但我不想使用它的XPATH。有没有办法在selenium中我可以通过data-(anything)属性选择元素?在这种情况下,它是data-field =“carUnder20K”。或者这个元素独有的东西?
Java代码:(这就是我现在正在做的,但是使用了一个自定义框架,它可以运行但是非常难以理解。)
WebDriver driver = new FireFoxDriver();
driver.findElement(By.xpath("/html/body/div[2]/div/div/div[1]/form/div/section[1]/div[6]/div[2]/select/option[@value='0']")).click();
我也试过了:
driver.ElementByDivText("N").click();
但是还有另外一个与此相同的元素,只有这里的数据字段不同。所以WebDriver只是重新点击我已经点击的其他元素,而不是我想要选择的新元素。
那里有硒巫师吗?
修改
抱歉,我忘记了每个按钮都有自己的HTML
这一事实是按钮/收音机:
<div ng-class="{'selected':profile.info.carUnder20k==true||profile.info.carUnder20k=='true'}" ng-click="onChoice($event, 'carUnder20k', 'true');" data-field="carUnder20k" class="choice" style="">Y</div>
没有按钮/收音机:
<div ng-class="{'selected':profile.info.carUnder20k==false||profile.info.carUnder20k=='false'}" ng-click="onChoice($event, 'carUnder20k', 'false');" data-field="carUnder20k" class="choice selected" style="">N</div>
答案 0 :(得分:2)
您可以使用CSS:
driver.findElement(By.cssSelector("[data-field='carUnder20k']")).click();
编辑: 对于您在评论中描述的内容,可能是xpath方法可以更好地工作:
driver.findElement(By.xpath("//div[@data-field='carUnder20k' and text()='N']")).click();