我想知道,在selenium中,如果我们同时添加implicit(10sec)
和。{
在脚本中显式wait(5sec)
然后哪个等待适用于元素
答案 0 :(得分:0)
Documentation
明确提到:
请勿混用
explicit
和unpredictable wait times
等。这样做会导致implicit wait
。例如,设置
10
explicit wait
秒和15
20
秒,可能会导致在<ListView Name="listViewItem" ClipToBounds="True" VerticalContentAlignment="Stretch" HorizontalContentAlignment="Stretch" SizeChanged="ListView_SizeChanged" TextOptions.TextHintingMode="Animated" Margin="0,0,117,0"> <ListView.View> <GridView AllowsColumnReorder="False"> <GridViewColumn Header="Task ID" Width="0"> <GridViewColumn.CellTemplate> <DataTemplate> <TextBlock Text="{Binding TaskID}" TextWrapping="Wrap" /> </DataTemplate> </GridViewColumn.CellTemplate> </GridViewColumn> <GridViewColumn Header="Tast Title" Width="150"> <GridViewColumn.CellTemplate> <DataTemplate> <TextBlock Text="{Binding TaskTitle}" TextWrapping="Wrap" /> </DataTemplate> </GridViewColumn.CellTemplate> </GridViewColumn> <GridViewColumn Header="Task Deadline" Width="275"> <GridViewColumn.CellTemplate> <DataTemplate> <TextBlock Text="{Binding TaskDeadline}" TextWrapping="Wrap" /> </DataTemplate> </GridViewColumn.CellTemplate> </GridViewColumn> <GridViewColumn Header="Task Group" Width="150"> <GridViewColumn.CellTemplate> <DataTemplate> <TextBlock Text="{Binding TaskGroup}" TextWrapping="Wrap" /> </DataTemplate> </GridViewColumn.CellTemplate> </GridViewColumn> <GridViewColumn Header="Task Contact" Width="200"> <GridViewColumn.CellTemplate> <DataTemplate> <TextBlock Text="{Binding TaskContact}" TextWrapping="Wrap" /> </DataTemplate> </GridViewColumn.CellTemplate> </GridViewColumn> <GridViewColumn Header="Task Workers" Width="200"> <GridViewColumn.CellTemplate> <DataTemplate> <TextBlock Text="{Binding TaskWorkers}" TextWrapping="Wrap" /> </DataTemplate> </GridViewColumn.CellTemplate> </GridViewColumn> </GridView> </ListView.View> </ListView>
秒后发生超时。
答案 1 :(得分:0)
使用显式或隐式等待,不要同时使用两者
如果你同时使用
我们的webdriver首先将遵循隐式等待,然后遵循显式等待,因为由于单线程使用,浏览器行为将像其他编程语言一样顺序。
明确和隐含等待 在继续下一步之前,等待使自动化任务执行经过一定时间。您应该选择使用显式等待或隐式等待。
**
警告:不要混合隐式和显式等待。这样做可能会导致 不可预测的等待时间。例如,设置隐式等待10 秒和显式等待15秒,可能导致超时 20秒后发生。
**
答案 2 :(得分:0)
如果确实需要显式等待(即等到元素变为可点击,不可见等),则需要在显式等待上方添加以下代码。
driver.manage().timeouts().implicitlyWait(0);
完成显式等待后,将隐式等待恢复为更多元素所需的等待时间。这样可以避免隐式和显式等待的累积等待时间。