【问题标题】:How to use selenium methods to choose web elements如何使用 selenium 方法选择 web 元素
【发布时间】:2014-10-09 13:17:02
【问题描述】:

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

【问题讨论】:

    标签: java html selenium automation qa


    【解决方案1】:

    您可以为此使用 CSS:

    driver.findElement(By.cssSelector("[data-field='carUnder20k']")).click();
    

    编辑: 对于您在评论中描述的内容,xpath 方法可能会更好:

    driver.findElement(By.xpath("//div[@data-field='carUnder20k' and text()='N']")).click();
    

    【讨论】:

    • 谢谢。它可以工作,但它选择是按钮,我希望它选择“否”。我怎么能这样做?
    • 请发布两个按钮的html
    • 感谢@Richard,至少用你的方法,代码更具可读性。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-08-19
    • 2020-08-08
    • 2019-06-03
    • 2020-12-23
    • 1970-01-01
    • 2019-11-20
    • 1970-01-01
    相关资源
    最近更新 更多