[英]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.