我有以下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.
由于
答案 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);
}