通过内部文本

时间:2016-08-30 21:37:35

标签: selenium selenium-webdriver webdriver

这是HTML页面的一部分,我需要访问第一个单选按钮:

<div>
    <div class="clear"> 
        <div class="relativeinput" style="top:8px;">
            <label class="clear" for="txtTempo">
                <input style="background-color: #E7E7E7;" name="rdoPrazoAcesso" type="radio">Unlimited time
            </label>
        </div>  
    </div>

    <div class="clear"> 
        <div class="relativeinput" style="top:20px; width:50px">
            <label class="clear" for="rdoDias">
                <input style="background-color: #E7E7E7;" name="rdoPrazoAcesso" type="radio">For
            </label>
        </div>  
        <div class="relativeinput" style="top:20px;">
            <input disabled="" class="pie | input-white |" size="1" ;="" style="text-align: center;font-size: 1.5em; position: absolute;" name="txtDias" type="text">
            <label class="clear" for="txtDias" style="padding-left: 70px; position: absolute;">
                days
            </label>                                                
        </div>
    </div>

    <div class="clear">
        <div class="relativeinput" style="top:30px;">
            <label class="clear" for="txtAcesso">
                <input style="background-color: #E7E7E7;" name="rdoPrazoAcesso" type="radio">Just for today
            </label>
        </div>  
    </div>
</div>

如何才能获取元素<input style="background-color: #E7E7E7;" name="rdoPrazoAcesso" type="radio">Por tempo indeterminado才能选择它?请记住,有多个具有相同名称的电台。

我尝试做类似

的事情
driver.findElement(By.xpath("//input[text()='Por tempo indeterminado']")).click();

但它没有用。

感谢。

1 个答案:

答案 0 :(得分:2)

如果您想通过文字选择它,可以使用xpath的方法text()

driver.FindElement(By.Xpath(".//input[text()='Por tempo indeterminado']"));

另一种方法是,通过文字再次获取所有单选按钮并获得所需内容:

var radioBtnList = driver.FindElements(By.Name("rdoPrazoAcesso"));
foreach(var radioBtnItem in radioBtnList)
{
    if(radioBtnItem.Text == "Por tempo indeterminado")
    {
        //do your stuff
        break;
    }
}

编辑: 如果您在文本之前或之后有空格:

driver.FindElement(By.Xpath(".//input[contains(text(),'Por tempo indeterminado')]"));