簡體   English   中英

Do/While 無限循環發出 c#

[英]Do/While infinitely loops issue c#

我正在自動與用戶必須手動刷新頁面 n 次(有時 3 或 5 甚至更長)的網站交互,以便按鈕出現在 web 頁面上。 為了克服這個問題,我創建了一個 do / while 循環,它應該刷新頁面,直到按鈕可見,以便可以單擊它。 問題是它不同步並無限循環。 我嘗試了下面的腳本,但它仍然沒有停止刷新。 知道如何讓它在元素可見后立即停止刷新嗎? 默認情況下,該元素是不可見的,因此用戶必須先刷新頁面。 刷新有效,但速度非常快,並且沒有足夠的時間檢查按鈕的可見性 state,也許這就是它進入無限循環的原因

int retries = 0;
bool isElementVisible = false;
do {
  await Page.ReloadAsync(new PageReloadOptions() { Timeout = 5000 });
  isElementVisible = await Page.IsVisibleAsync("input[name='elementname']");
  retries ++;
while (!isElementVisible)

您的代碼的問題是IsVisibleAsync將立即解析為 false。 您可以使用WaitForSelectorAsync等待一段時間的可見。 例如,5 秒:

int retries = 0;
bool isElementVisible = false;
do {
  await Page.ReloadAsync(new PageReloadOptions() { Timeout = 5000 });
  try {
    // The default State is Visible
    await Page.WaitForSelectorAsync("input[name='elementname']", new(){ Timeout = 5000});
    isElementVisible = true;
  } catch(Exception ex) {
    retries ++;
  }
} while (!isElementVisible)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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