Skip to main content
用 Box 自己的无线接口扫描接入点并加入网络。被测设备本身就是接入点时,这很有用;测试过程中 Box 必须在多个网络之间切换时,它也很有用。

句柄

WiFi 是 Box 级能力,不是一个 Net。它没有 Net 名称,也没有 name()
这里说的是 Box 自己的接口。它不是 Python API 中那个通过路由器家长控制来限制某台被测设备上网的 NetType.Wifi Net,也不是路由器 Net。

方法

类型

方法参考

status() -> Result<Vec<WifiInterface>>

Box 上每一个无线接口的状态。

scan(interface: &str) -> Result<Vec<WifiAccessPoint>>

扫描接入点,信号最强的排在前面。

connect(ssid: &str, password: &str) -> Result<WifiConnection>

加入一个网络。开放网络请传空密码。

delete(ssid: &str) -> Result<()>

按 SSID 删除一份已保存的连接配置。

示例

断言被测设备已经把它的接入点建起来了

说明

  • capabilities.wifi_commandtrue 只表示 Box 提供这条路由,而不表示它能完成这项工作。容器里没装 nmcli 的 Box 会让 scan() 得到 Error::Box 和 HTTP 502,并携带 [Errno 2] No such file or directory: 'nmcli'。而在同一台 Box 上,status() 根本不会报错:它会返回一个报告 Interface detection failed 的接口。
  • 每个动作都有固定的 90 秒预算。nmcli 和 iwlist 调用会阻塞数秒,一次连接可能经由 wpa_supplicant 重试,而且它们会在 Box 的 wifi 锁上排队。
  • strength 是一个近似的百分比,不是 dBm。
  • 把 Box 在网络之间挪动,可能会改变您访问它所用的地址。如果被测设备提供的接入点也是您的测试所使用的路径,请谨慎地把 Box 连上去。