我试图从html代码中获取子元素(卡号),其中html标记和类名相同。下面是html代码片段
<li class="paymentMethods-stored">
<li class="paymentMethod">
<div class="stored-card-details">
<span class="body-2">Name: </span>
<span class="body-2 body-2-md"> VISA</span>
<p>
<span class="body-2">Number:</span>
<span class="body-2 body-2-md"> ************4305</span>
</p>
<p>
<span class="body-2">Expiry:</span>
<span class="body-2 body-2-md"> 03/2030</span>
</p>
</div>
</li>
<li class="paymentMethod">
<div class="stored-card-details">
<span class="body-2">Name: </span>
<span class="body-2 body-2-md"> VISA</span>
<p>
<span class="body-2">Number:</span>
<span class="body-2 body-2-md"> ************4111</span>
</p>
<p>
<span class="body-2">Expiry:</span>
<span class="body-2 body-2-md"> 04/2031</span>
</p>
</div>
</li>
</li>
下面是我尝试的标识符。但都返回了第一个卡号 "************4305”。
@FindBy(xpath = "//li[@class='paymentMethods-stored']//li[@class='paymentMethod']")
private WebElement firstSavedCard;
@FindBy(xpath = "(//li[@class='paymentMethods-stored']//li[@class='paymentMethod'])[2]")
private WebElement secondSavedCard;
String firstCard=firstSavedCard.findElement(By.xpath("//*[@class='stored-card-details']/p[1]/span[2]")).getText();
String secondCard=secondSavedCard.findElement(By.xpath("//*[@class='stored-card-details']/p[1]/span[2]")).getText();
尝试了其他选项:这也返回了第一个卡号“************4305”。
secondSavedCard.findElement(By.xpath("/p[1]/span[2]")).getText();
secondSavedCard.findElement(By.xpath(".//*[@class='stored-card-details']/p[1]/span[2]")).getText()
尝试下面的xpath
选择所有编号的标签-
//li[@class="paymentMethod"]/descendant::span[4]
用于选择第一个元素使用-
(//li[@class="paymentMethod"]/descendant::span[4])[1]
用于选择第二个元素使用-
(//li[@class="paymentMethod"]/descendant::span[4])[2]
等等。
此外,您可以使用findelements
而不是findelement
来查找所有元素。收集列表中的所有元素,然后遍历并提取文本。
这里有一个git repo包含一个应用程序和一个测试项目。失败的JUnit测试证明了问题:https://github.com/achengs/an-appium-question 详细信息如下(代码和Appium日志交错) 这是第一个成功的发现。活动的布局xml文件对于我要查找的文本字段具有以下属性: 有一个HTML请求。我正在测试一个原生的Android应用程序。下面是当前测试活动的布局xml
我不能在selenium中找到使用"id"的元素,因为id在每个执行会话中都是随机变化的,所以我不会在下一次执行中得到相同的id。因为没有其他唯一的属性来标识元素。 代码示例
我已经写了下面的代码来选择单选按钮,它的工作很好,但今天它不工作了。请找到代码和相应的错误消息 代码1: 错误1:“线程”main“org.openqa.selenium.TimeoutException中出现异常:等待存在由:By.id:0_2485a_startdate定位的元素10秒后超时” 代码2: 错误2:“线程”main“org.openqa.selenium.TimeoutExcep
为什么findElement(By)的返回类型是WebElement? 我知道文档中提到了返回类型是Webelment,但有人能解释一下为什么返回类型是Webelment吗。 我对这个话题的研究。 因为我们使用findElement搜索元素,webelement类用于表示HTML元素。 请让我知道我的想法是否正确或有任何具体原因
我有一个输入框,就像我在这里用来输入我的问题,它的HTML是 每次,我都会尝试输入一些文本 我明白错误了-
任何提示都会很有帮助!