- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在将 TestNG 与 Selenium 一起使用。我正在尝试使用 driver.getWindowHandle();在弹出窗口、iframe 等之间切换。
问题是,如果我在 TNGDriver 类中这样声明它
public String originalHandle = driver.getWindowHandle();
我得到一个java.lang.NullPointerException(显然,因为这是在驱动程序之前初始化的)。我如何声明一次并开始在其他类中使用它?请记住,我的类在它们之间进行了扩展,我需要在其他类的方法内使用此originalHandle变量,例如:
public void clickOnFacebookIcon() {
Assert.assertTrue(true, driver.findElement(By.id(FACEBOOK_ICON)).getText());
driver.findElement(By.id(FACEBOOK_ICON)).click();
for(String handle : driver.getWindowHandles()) {
if (!handle.equals(originalHandle)) {
driver.switchTo().window(handle);
driver.close();
}
}
driver.switchTo().window(originalHandle);
}
这是我的其他类(class):
TNGDriver 类
public class TNGDriver {
public static WebDriver driver;
public static final String CHROME_DRIVER_PATH = "C:\\Program Files (x86)\\Google\\Chrome\\Application\\chromedriver.exe";
private WebDriverWait wait;
@SuppressWarnings("deprecation")
public void init() {
DesiredCapabilities capabilities = DesiredCapabilities.chrome();
ChromeOptions options = new ChromeOptions();
options.addArguments("--incognito");
capabilities.setCapability(ChromeOptions.CAPABILITY, options);
System.setProperty("webdriver.chrome.driver", CHROME_DRIVER_PATH);
driver = new ChromeDriver(capabilities);
driver.manage().window().maximize();
}
public WebDriverWait getWait() {
wait = new WebDriverWait(driver, 60);
return wait;
}
Testcase1 类
public class Testcase1 extends Registration {
TNGDriver tngDriver = new TNGDriver();
@BeforeTest
public void setup() {
tngDriver.init();
}
@Test(priority = 1)
public void step1_clickOnSignIn() {
clickOnSignIn();
}
@Test(priority = 2)
public void step2_clickOnFacebookIcon() {
clickOnFacebookIcon();
}
最佳答案
您可以使用设计模式来做到这一点
https://en.wikipedia.org/wiki/Singleton_pattern
使用这种模式,您将只有一个对象实例。
class Singleton
{
// static variable single_instance of type Singleton
private static Singleton single_instance = null;
// variable of type String
public String originalHandle = driver.getWindowHandle();
// private constructor restricted to this class itself
private Singleton()
{
//Do something on constructor
}
// static method to create instance of Singleton class
public static Singleton getInstance()
{
if (single_instance == null)
single_instance = new Singleton();
return single_instance;
}
}
要访问它,您可以执行以下操作
Singleton x = Singleton.getInstance();
//To access the String variable
x.s
关于java - 如何初始化 StringoriginalHandle = driver.getWindowHandle();一次?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53640062/
我很困惑 Selenium 中返回窗口处理的集合是否保留窗口打开的顺序,我的意思是第一个窗口将在第一个位置,下一个窗口将在下一个位置打开,依此类推。 这是代码: Set handles = drive
这个问题已经有答案了: Selenium switch focus to tab, which opened after clicking link (3 个回答) 已关闭 4 年前。 我知道方法ge
getWindowHandles 在 Firefox 浏览器中返回不正确的值。当我在单个 Firefox 窗口中打开多个选项卡并尝试找出窗口句柄的数量来检查天气时,它返回正确的值, getWindow
我是 Selenium 学习的新手。 WebDriver.getWindowHandle() documentation对我来说不是很清楚,而且这个例子没有像书中给出的那样工作,所以我想到确认这个方法
根据工程人员的帮助进行了一些更改。这是我用于获取新窗口句柄的最终代码: localdriver = @driver @driver.getAllWindowHandles() .then (handl
我需要在 IE 中实现从一个窗口切换到另一个窗口。然而,元素驱动不支持getWindowHandle函数。 我认为这可能只是配置问题或设置问题,但我不知道如何解决。 拜托,任何建议。 我正在使用 C#
我正在将 TestNG 与 Selenium 一起使用。我正在尝试使用 driver.getWindowHandle();在弹出窗口、iframe 等之间切换。 问题是,如果我在 TNGDriver
Selenium 2 getWindowHandle说: Schedules a command to retrieve they current window handle. 但是当我尝试使用由此返
有一个问题与此非常相似,询问如何做我想做的事情,但答案对我不起作用。我还没有足够的声誉来评论或要求澄清。 我在 NodeJS 中使用 JavaScript 和 WebDriverJS 我正在尝试切换到
本文整理了Java中org.mozilla.zest.core.v1.ZestClientLaunch.getWindowHandle()方法的一些代码示例,展示了ZestClientLaunch.g
我开始学习如何使用 Selenium 和 Java 来处理浏览器中的多个选项卡。看起来我下面的代码不起作用。 import java.util.ArrayList; import or
我正在尝试检查点击按钮打开 facebook 登录的弹出窗口。 Error : Object [object Object] has no method 'getWindowHandle'. 代码片段
driver.getWindowHandles() 返回 Set所以,如果我们想通过索引选择窗口,我们必须将 Set 包装到 ArrayList 中: var tabsList = new Array
iPad 问题。我正在尝试使用 Selenium 切换到第一个 iFrame,但它在 iPad 虚拟机中不起作用。 public void swichToFirstFrame(WebDriver dr
上下文代码: Set handles = driver.getWindowHandles(); String firstWinHandle = driver.getWindow
我在 Windows 7 上使用 Selenium 2.32、Java JDK 1.6.0_07、IE9。这就是问题所在 当我使用 IE WebDriver 32 位并单击打开包含 PDF 的新浏览器
我是一名优秀的程序员,十分优秀!