[英]Serenity: Cannot find Target showing for 3 seconds
我試圖找到一個 Target,它是一個帶有消息和按鈕的小吃店,該按鈕在我單擊按鈕后僅可見 3 秒:
如果我暫停調試器,我會找到帶有 css 選擇器.mat-snack-bar-container
的元素:
但是在代碼中,當我嘗試使用相同的選擇器獲取目標時,它永遠不會被發現不是目標,也不會使用驅動程序來查找元素:
actor.attemptsTo(WaitUntil.the(SnackBar.SNACK_BAR_CONTAINER,isCurrentlyVisible()).forNoMoreThan(10).seconds());
我試過isCurrentlyVisible
、 isVisible
、 isPresent
什么都沒有。
使用 findElement 我也一無所獲:
WebElement snackBar = webDriver.findElement((By.cssSelector(".mat-snack-bar-container")));
當我看到步驟的屏幕截圖時,我確實看到了小吃店......
有任何想法嗎? 謝謝!
我認為你需要做:
WebElement snackBar = webDriver.findElement((By.cssSelector(".mat-snack-bar-container")));
WebElement snackBar = webDriver.findElement((By.className(".mat-snack-bar-container")));
如果您知道將顯示什么文本,則可以使用textToBePresentInElementLocated
方法。 讓我們看看下面的例子,
HTML :我假設您的 HTML 將是這樣的。
<input class="mat-snack-bar-container"> Workflow testing "sth" saved. </input>
如果您知道預期的文本,請等到文本出現
WebElement snackBar = wait.until(ExpectedConditions.textToBePresentInElementLocated(By.xpath("//input[@class='mat-snack-bar-container']"), "Workflow testing"));
snackBar.click();
我發現了為什么演員找不到小吃店。 在文件serenity.properties
我有這一行: serenity.step.delay=2500
這正是該元素可見的時間。 如果我直接使用驅動程序,這不會受到影響,我可以在屏幕截圖和頁面源中看到小吃欄。 但是使用演員我只能在屏幕截圖中看到它,有時。 一旦我將步進延遲降低到 500,我就能夠找到該元素。
謝謝大家的幫助!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.