在触发下一个click事件之前,我尝试使用硒Web驱动程序等待购物车页面上的计算得出的总计。但是我有一个例外。页面上没有其他可等待的元素。我认为为经验丰富的开发人员找到解决方案真的很容易,但我不是。
我使用以下等待命令:
wait.until(ExpectedConditions.textToBePresentInElementLocated(By.cssSelector(".grand.totals .price"), "35,75 €"));`
这是我尝试选择元素的源代码片段。
<tr class="grand totals">
<th class="mark" scope="row">
<strong data-bind="i18n: title">Bestellsumme</strong>
</th>
<td data-bind="attr: {'data-th': title}" class="amount" data-th="Bestellsumme">
<strong><span class="price" data-bind="text: getValue()">35,75 €</span></strong>
</td>
</tr>
这是我的例外。
org.openqa.selenium.ElementNotVisibleException:元素不可交互 (会议信息:chrome = 75.0.3770.100) (驱动程序信息:chromedriver = 74.0.3729.6(255758eccf3d244491b8a1317aa76e1ce10d57e9-refs / branch-heads / 3729 @ {#29}),platform = Windows NT 10.0.17134 x86_64)(警告:服务器未提供任何堆栈跟踪信息) 命令持续时间或超时:0毫秒 构建信息:版本:'3.141.59',修订版本:'e82be7d358',时间:'2018-11-14T08:17:03' 系统信息:主机:'MARCEL-THINK',ip:'10 .110.12.3',操作系统名称:'Windows 10',os.arch:'amd64',os.version:'10 .0',java.version:'11 .0 .3' 驱动程序信息:org.openqa.selenium.chrome.ChromeDriver
答案 0 :(得分:0)
您似乎很近。文本 35,75€在其之间包含一个空格字符,并且位于<span>
标签内。因此,您可以使用以下任一Locator Strategies:
cssSelector
:
new WebDriverWait(driver, 20).until(ExpectedConditions.textToBePresentInElementLocated(By.cssSelector("tr.grand.totals td.amount>strong>span.price"), "35,75"));
xpath
:
new WebDriverWait(driver, 20).until(ExpectedConditions.textToBePresentInElementLocated(By.xpath("//tr[@class='grand totals']//td[@class='amount']/strong/span[@class='price']"), "35,75"));