gpt4 book ai didi

java - 如何使用 mockito 模拟 webdriver?

转载 作者:搜寻专家 更新时间:2023-10-31 20:02:23 27 4
gpt4 key购买 nike

我希望能够为我的 Selenium 集成测试进行单元测试,为此我需要能够模拟驱动程序和测试所需的元素,这是一个返回名称的函数的快速示例元素的。

public class demo {

private WebDriver mockDriver;
private WebElement mockElement;

@Before
public void setUp(){
this.mockDriver = mock(WebDriver.class);
this.mockElement = mock(WebElement.class, withSettings().name("elementName"));
when(this.mockDriver.findElement(By.id("testmock"))).thenReturn(mockElement);
}

public String getName(String id){
WebElement testElement = mockDriver.findElement(By.id(id));
return testElement.getAttribute("name");
}

@Test
public void assertElementName() throws InterruptedException {
Assert.assertTrue(getName("testmock").equals("elementName"));
}
}

这在 getName() 中返回时给我一个 java.lang.NullPointerException。我显然用错了,但我不知道怎么做。有这方面经验的人可以指出正确的方向吗?

最佳答案

您误解了这段代码的作用:

this.mockElement = mock(WebElement.class, withSettings().name("elementName"));

withSettings() 子句为模拟对象命名,这意味着 Mockito 生成的某些错误消息将使用此名称。您没有WebElement 对象上设置任何属性。

所以...当您的代码到达这部分时:

return testElement.getAttribute("name");

它返回 null,因为没有具有该值的属性。如果你想拥有一个属性,那么你需要添加如下内容:

when(this.mockElement.getAttribute("name")).thenReturn("elementName");

关于java - 如何使用 mockito 模拟 webdriver?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24242469/

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