0

我正在自动与一个网站交互,用户必须手动刷新页面 n 次(有时 3 或 5 次甚至更长),以便按钮出现在网页上。为了克服这个问题,我创建了一个 do / while 循环,它应该刷新页面,直到按钮可见,以便可以单击它。问题是它不同步并无限循环。我尝试了下面的脚本,但它仍然没有停止刷新。知道如何让它在元素可见后立即停止刷新吗?默认情况下,该元素是不可见的,因此用户必须先刷新页面。刷新有效,但速度非常快,并且没有足够的时间检查按钮的可见性状态,也许这就是它进入无限循环的原因

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

1 回答 1

1

您的代码的问题是它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)
于 2022-01-07T19:32:41.087 回答