考虑以下截图:
模态
在这里,只有按钮I accept
和More options
是可点击的。模态背景防止任何对导航链接的点击。是否有可能使用剧作家只选择当前视口中的链接,并接收点击事件,如果一个发生在他们的边界框内?
你可以使用剧作家的可操作性检查组合来缩小链接/按钮的范围,只选择那些可点击的。从定位器开始选择所有标签(或按钮或其他东西,这取决于你正在寻找什么)。遍历得到的定位器,并对每个
执行所需的检查。locators = page.locator(selector)
locator_count = await locators.count()
for index in range(0, locator_count):
locator = locators.nth(index)
if await locator.is_visible() and await locator.is_enabled():
# do your action
...
编辑:阅读更多,看起来你实际上可以使用点击trial
选项做这些可操作性检查。page.click(selector, trial=True)
这就是三思而后行的方法。剧作家也会在每次点击和其他事件之前进行这些检查,所以如果你只是想在一个有效的元素上执行一个动作,你可以只try
点击并处理错误,如果它是不可操作的。像这样:
locators = page.locator(selector)
locator_count = await locators.count()
for index in range(0, locator_count):
locator = locators.nth(index)
try:
await locator.click()
except TimeoutError:
# handle error. likely just skip this locator
continue