在要检查的 属性 是异步的流中查找元素
Find elements in stream where the property to check is async
使用 webdriver 我 select 网格第一列的元素,并想检查带有文本 Task 499
的元素是否是结果的一部分。
CSS 不允许 select 或引用文本内容,这将允许首先获得有问题的一个元素。
const firstColumnSelector = const By.cssSelector(
'app-element::shadow #myGrid::shadow div.bwu-datagrid-cell.l0');
bool lastRowVisible = driver.findElements(firstColumnSelector)
.contains((e) => e.text == 'Task 499' && e.displayed);
这不起作用,因为 e.text
returns Future<String>
而不是 String
和 e.displayed
returns Future<bool>
bool
和
contains()
也只接受 bool
但不接受 Future<bool>
.
这可以用asyncMap()
解决
const firstColumnSelector = const By.cssSelector(
'app-element::shadow #myGrid::shadow div.bwu-datagrid-cell.l0');
bool lastRowVisible = driver.findElements(firstColumnSelector)
.asyncMap((e) async => await e.text == 'Task 499' && await e.displayed)
.contains(true);
使用 webdriver 我 select 网格第一列的元素,并想检查带有文本 Task 499
的元素是否是结果的一部分。
CSS 不允许 select 或引用文本内容,这将允许首先获得有问题的一个元素。
const firstColumnSelector = const By.cssSelector(
'app-element::shadow #myGrid::shadow div.bwu-datagrid-cell.l0');
bool lastRowVisible = driver.findElements(firstColumnSelector)
.contains((e) => e.text == 'Task 499' && e.displayed);
这不起作用,因为 e.text
returns Future<String>
而不是 String
和 e.displayed
returns Future<bool>
bool
和
contains()
也只接受 bool
但不接受 Future<bool>
.
这可以用asyncMap()
const firstColumnSelector = const By.cssSelector(
'app-element::shadow #myGrid::shadow div.bwu-datagrid-cell.l0');
bool lastRowVisible = driver.findElements(firstColumnSelector)
.asyncMap((e) async => await e.text == 'Task 499' && await e.displayed)
.contains(true);