我对 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>
抱歉,多行不起作用...
我想选择这个元素,但我不想使用它的 XPATH。在 selenium 中是否有一种方法可以通过数据(任何东西)属性来选择元素?在本例中,它是 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 只是重新单击我已经单击的其他元素,而不是我想要选择的新元素。
那里有 Selenium 巫师吗?
编辑:
抱歉,我忘记了每个按钮都有自己的 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>
无按钮/ radio :
<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>
最佳答案
您可以使用 CSS 来实现此目的:
driver.findElement(By.cssSelector("[data-field='carUnder20k']")).click();
编辑: 对于您在评论中所描述的内容,xpath 方法可能会效果更好:
driver.findElement(By.xpath("//div[@data-field='carUnder20k' and text()='N']")).click();
关于java - 如何使用selenium方法选择网页元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25332591/