为什么只需要列表来取消 selenium webdriver 中的单个弹出窗口?
Why list is required just to cancel single pop up in selenium webdriver?
在页面对象工厂中:
By popup=By.xpath("//button[test()='NO THANKS']");
public List<WebElement> getPopUpSize(){
return driver.findElements(popup);
}
public WebElement getPopUp(){
return driver.findElement(popup);
}
将上述方法调用到测试用例中:
LandingPage l = new LandingPage(driver);
if(l.getPopUpSize().size()>0)
{
l.getPopUp().click();
}
我不明白为什么我们必须创建一个列表来取消单个弹出?
不,对于单个网络元素,您不需要 findElements
。使用 findElement
或 Explicit waits
,如下图所示:
- 使用
ExplicitWaits
代码:
public WebElement getPopUpWebElement(){
return driver.findElement(popup);
}
并在测试方法中:
try {
WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(30));
wait.until(ExpectedConditions.elementToBeClickable(getPopUpWebElement())).click();
}
catch(Exception e){
System.out.println("Could not click on pop up");
e.printStackTrace();
}
在页面对象工厂中:
By popup=By.xpath("//button[test()='NO THANKS']");
public List<WebElement> getPopUpSize(){
return driver.findElements(popup);
}
public WebElement getPopUp(){
return driver.findElement(popup);
}
将上述方法调用到测试用例中:
LandingPage l = new LandingPage(driver);
if(l.getPopUpSize().size()>0)
{
l.getPopUp().click();
}
我不明白为什么我们必须创建一个列表来取消单个弹出?
不,对于单个网络元素,您不需要 findElements
。使用 findElement
或 Explicit waits
,如下图所示:
- 使用
ExplicitWaits
代码:
public WebElement getPopUpWebElement(){
return driver.findElement(popup);
}
并在测试方法中:
try {
WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(30));
wait.until(ExpectedConditions.elementToBeClickable(getPopUpWebElement())).click();
}
catch(Exception e){
System.out.println("Could not click on pop up");
e.printStackTrace();
}