簡體   English   中英

寧靜:無法找到目標顯示 3 秒

[英]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());

我試過isCurrentlyVisibleisVisibleisPresent什么都沒有。

使用 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM