2014-12-19 44 views
1

特定元素我有這樣的HTML代碼:硒的webdriver(爪哇) - 選擇取決於條件

<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> 

我使用硒的webdriver。 我需要創建Java代碼可能:

如果<span>test3然後選擇一個<span class="ex3">其位於內同一div class="ex2" 但因爲我有div的,跨越一個主內相同的className我無法區別這跨越。 。

請問這個問題請你幫忙嗎?

所以,這樣的事情:

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

感謝

+0

請將其中的任意一個回覆標記爲對您有幫助的回答。謝謝.. :) – Subh 2014-12-19 13:47:43

回答

1

1-使用這個XPath去<span>test1 then <span class=ex3>test2

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

而且,我們E在這樣的代碼:

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']")); 
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); 
}