gpt4 book ai didi

selenium-webdriver - 需要一个字段作为 Rust 特征的一部分

转载 作者:行者123 更新时间:2023-12-05 03:40:21 24 4
gpt4 key购买 nike

是否有可能要求结构具有特定字段作为特征的一部分?我正在使用 thirfour_sync crate 在 Rust 中进行一些 Web 自动化。我想为将实现它们的页面对象编写一些具有默认实现的特征。基本上,我知道一个事实,即每个要实现此特征的结构都会有一个名为“驱动程序”的字段,该字段包含对 WebDriver 结构的引用。我想在我的特征的默认实现中使用这个驱动字段。

error[E0609]: no field `driver` on type `&Self`
--> src\base_order_details.rs:13:30
|
10 | / pub trait BaseOrderDetails {
11 | |
12 | | fn oid(&self) -> WebDriverResult<String> {
13 | | let oid_title = self.driver.find_element(By::XPath("//*[text()=\"Order ID:\"]"))?;
| | ^^^^^^
... |

有没有办法让编译器知道任何实现这个特性的东西都会有一个 &WebDriver 类型的现场驱动程序?

最佳答案

我在起草问题时找到了问题的答案。不,您不能从特征访问字段。作为解决方案,我向特征添加了一个 get_driver 方法并在默认实现中使用它,因此用户可以简单地实现 get_driver 方法并默认其余部分。

pub trait BaseOrderDetails {

fn get_driver(&self) -> &WebDriver;

fn oid(&self) -> WebDriverResult<String> {
let oid_title = self.get_driver().find_element(By::XPath("//*[text()=\"Order ID:\"]"))?;

// do some other stuff

我在 Rust Book 关于特征的章节中找到了这个解决方案,在默认实现下:https://doc.rust-lang.org/book/ch10-02-traits.html

关于selenium-webdriver - 需要一个字段作为 Rust 特征的一部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68171921/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com