java - 如何使用selenium方法选择网页元素

标签 java html selenium automation

我对 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/

相关文章:

java - selenium 格式化程序修改(导出到 webdriver 支持的 java)

java - 来自 PostMan 的 POST 日期 application/json 时无法解析的日期

javascript - 堆叠图像与幻灯片

javascript - 创建用于音频播放/静音设置的cookie

Selenium/Python - 键盘无法访问元素

java - Selenium 悬停代码适用于 Chrome 而不是 Edge

java - 如何使用 XStream 为数据类型别名?

java - 检查 Collection 值(value)

java - ElasticSearch 相当于 Solr getBeans

javascript - 设置输入文本框中输入的最小数值