Selenium Webdriver(Java) - 根据条件选择特定元素

时间:2014-12-19 11:20:05

标签: java selenium webdriver

我有以下HTML代码:

<div class="ex1">
    <div class="ex2">
        <span>test1</span>
        <span class="ex3">test2</span>
    </div>
    <div class="ex2">
        <span>test3</span>
        <span class="ex3">test2</span>
    </div>
</div>

我正在使用Selenium Webdriver。 我需要创建可以的代码:

如果<span>test3,请选择位于同一<span class="ex3">内的div class="ex2" 但是因为我在一个主要内部有div和跨越同一个className,所以我无法区分这个跨度。

你能帮我解决这个问题吗?

所以,像这样:

如果<span>test3 then <span class=ex3>test2. 要么 如果<span>test1 then <span class=ex3>test2.

由于

2 个答案:

答案 0 :(得分:1)

1-使用此xpath转到<span>test1 then <span class=ex3>test2

//span[.='test1']/following-sibling::span[.='test2']

并且,在这样的代码中使用:

WebElement ele = driver.findElement(By.xpath("//span[.='test1']/following-sibling::span[.='test2']"));


2 - 然后,使用此xpath转到<span>test3 then <span class=ex3>test2

//span[.='test3']/following-sibling::span[.='test2']

在以下代码中使用:

WebElement ele = driver.findElement(By.xpath("//span[.='test3']/following-sibling::span[.='test2']"));

答案 1 :(得分:0)

我已根据您的实际问题实施了If语句,您可以根据自己的要求对其进行修改。

WebElement test1_class1 =wait.until(ExpectedConditions.elementToBeClickable(By.xpath("//div[@class='ex1']//div[1]//span[1]")));  
String test1= test1_class1.getText();
WebElement test2_class1 =wait.until(ExpectedConditions.elementToBeClickable(By.xpath("//div[@class='ex1']//div[1]//span[2]")));
String test2_1 =test2_class1.getText();
WebElement test3_class2 =wait.until(ExpectedConditions.elementToBeClickable(By.xpath("//div[@class='ex1']//div[2]//span[1]")));
String test3 =test3_class2.getText();
WebElement test2_class2 =wait.until(ExpectedConditions.elementToBeClickable(By.xpath("//div[@class='ex1']//div[2]//span[2]")));
String test2_2 =test3_class2.getText();
try
{
if(test1.equals("test1"))
                    {
                    System.out.println(test2_1);
                    }
if(test3.equals("test3"))
                    else
                    {
                    System.out.println(test2_2);
                    }

}
catch(Throwable e)
{
System.out.println("Exception in program"+e);
}