gpt4 book ai didi

c# - 单击列表中的所有弹出元素

转载 作者:行者123 更新时间:2023-11-30 17:33:26 26 4
gpt4 key购买 nike

我有一个页面上所有元素的列表,类名是 popup,我想一次打开和关闭每个元素。这是我到目前为止的代码:

IList<IWebElement> links = driver.FindElements(By.ClassName("popup"));

for (int i = 0; i < links.Count; i++)
{
IWebElement welcomePopup = driver.FindElement(By.XPath(string.Format("//div[@id='Buttons']/table/tbody/tr/td/table/tbody/tr/td[contains(text(),'" + links[i].Text + "')]")));
PopupWindowFinder popupFinder = new PopupWindowFinder(driver);
string welcomePopupHandle = popupFinder.Click(welcomePopup);

if (!string.IsNullOrEmpty(links[i].Text))
driver.SwitchTo().Window(welcomePopupHandle);
driver.FindElement(By.Id("cmdClose")).Click();
}

这只会打开和关闭第一个元素;一旦第一个元素关闭,我在 IWebElement welcomePopup 行收到一个 System.NullReferenceException : Object reference not set to an instance of an object. 。我如何让它遍历列表中的每个项目?我是一个初学者,所以如果我遗漏了一些对您来说很明显的东西,请告诉我。

最佳答案

如果您能提供实际页面,将会有所帮助。

无论如何,你能试试这个吗?

String parentWindow = driver.CurrentWindowHandle;
IList<IWebElement> links = driver.FindElements(By.ClassName("popup"));

for (int i = 0; i < links.Count; i++)
{
IWebElement welcomePopup = driver.FindElement(By.XPath(string.Format("//div[@id='Buttons']/table/tbody/tr/td/table/tbody/tr/td[contains(text(),'" + links[i].Text + "')]")));
PopupWindowFinder popupFinder = new PopupWindowFinder(driver);
string welcomePopupHandle = popupFinder.Click(welcomePopup);

if (!string.IsNullOrEmpty(links[i].Text))
driver.SwitchTo().Window(welcomePopupHandle);
driver.FindElement(By.Id("cmdClose")).Click();
driver.SwitchTo().Window(parentWindow);
}

  • 首先,您需要获取原始窗口句柄。
  • 切换到弹出实例
  • 在弹出窗口上进行操作。
  • 这里尝试使用driver.SwitchTo().Window(parentWindow);

    切换回原来的窗口

    希望对您有所帮助。

  • 关于c# - 单击列表中的所有弹出元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43942054/

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