隐式使用this引用逸出

//逸出
public class ThisEscape{
  public ThisEscape(EventSource source){
    source.registerListener(
      new EventListener(){
        public void onEvent(Event e){
          doSomething(e);
        }
      }
    );
  }
} 


//使用工厂方法防止this逸出
public class SafeListener{
  private final EventListener listener;

  private SafeListener(){
    listener = new EventListener(){
      public void onEvent(Event e){
        doSomething(e);
      }
    };
  }
  
  public static SafeListener newInstance(EventSource source){
    SafeListener safe = new SafeListener();
    source.registerListener(safe.listener);
    return safe;
  }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
隐式等待是一种全局性的等待方式,在执行测试用例时,如果找不到元素,就会等待一段时间,直到元素现或超时。以下是使用隐式等待的方法: 1. 导入selenium库中的WebDriverWait和expected_conditions模块: ```python from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC ``` 2. 创建一个WebDriverWait对象,并指定最长等待时间: ```python wait = WebDriverWait(driver, 10) ``` 3. 使用until()方法和ExpectedConditions类中的条件来指定等待的条件: ```python element = wait.until(EC.presence_of_element_located((By.ID, 'myElement'))) ``` 以上代码表示等待10秒钟,直到id为"myElement"的元素现在页面上,然后将该元素赋值给变量element。 注意:需要导入selenium库中的By模块来指定元素的查找方式。 完整示例代码如下: ```python from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC driver = webdriver.Chrome() driver.get('http://example.com') # 创建一个WebDriverWait对象 wait = WebDriverWait(driver, 10) # 使用until()方法和ExpectedConditions类中的条件来指定等待的条件 element = wait.until(EC.presence_of_element_located((By.ID, 'myElement'))) # 对找到的元素进行操作 element.click() # 关闭浏览器 driver.quit() ``` 以上代码中,我们打开了一个网站,然后等待id为"myElement"的元素现,并对该元素进行了点击操作,最后关闭了浏览器。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值