每次运行后Xpath都会发生变化

时间:2016-06-08 10:57:45

标签: java selenium selenium-webdriver

请有人帮忙。

我需要掌握每次跑步后产生的数字。由于这个数字在每次运行后都会发生变化,我需要抓住它并将其写入Excel工作表。我在此字段中使用Xpath但不确定如何使此字段更通用,以便仅捕获最后生成的数字。

我尝试的Xpath如下所示,正在更改的语法是div[2]div[3]: -

driver.findElement(By.xpath("/html/body/div/div[3]/div/div/div[3]/div/section/section/article/div[2]/div/div/div/div[2]/div[2]/div[1]/div/div[2]/p")).getText();

driver.findElement(By.xpath("/html/body/div/div[3]/div/div/div[3]/div/section/section/article/div[2]/div/div/div/div[2]/div[3]/div[1]/div/div[2]/p")).getText();

我的HTML SOURCE代码是:

 <div class="card-details row"> <div class="pane base4"> <div class="card"> <div class="card-name"> <div class="card-number"> <h4>Card number</h4> <p>633597015500042861</p> </div> <a class="submit-btn uniform-button button-smaller button-orange" href="/my-account/replacement-card?cardId=1ce25b86-27e6-4ce8-8ef3-6576f9a0ae84"> </div>

谢谢和问候, AZ。

3 个答案:

答案 0 :(得分:0)

请尝试使用xpath下方检索卡号。

String cardNum = driver.findElement(By.xpath(".//div[@class='card-number']/p")).getText();

您正在访问<div class="card-number">标记中随机生成的卡号。

希望这有帮助。

答案 1 :(得分:0)

//h4[contains(text(),'Card number')]/following-sibling::p

div[h4[contains(text(),'Card number')]]/p

如果在代码中多次出现相同的xpath,并且您想要选择最后一个,那么就是这样:

xpath[count(sameXpath)] 

这将为您提供xpath的最后一次出现

答案 2 :(得分:-2)

请按以下方式进行:

// as per your given xpath 
    String FirstXpath = "/html/body/div/div[3]/div/div/div[3]/div/section/section/article/div[2]/div/div/div/div[2]/div[";
    String SecondXpath = "]/div[1]/div/div[2]/p";

// make sure here i value is as per your application
for(int i=2;i<4;i++){
    driver.findElement(By.xpath(FirstXpath + i + SecondXpath)).getText();
}

根据你的div值改变,确保i的值。

更新

根据html提供的driver.findElement(By.xpath("//*[@class='card-number']/h4/p")).getText();