首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >问题: click()正在查找活动框架,但框架在单击方法期间更改

问题: click()正在查找活动框架,但框架在单击方法期间更改
EN

Stack Overflow用户
提问于 2022-04-07 08:02:07
回答 2查看 114关注 0票数 1

目前,我正在测试PEGA应用程序的UI,而我偶然发现了一个问题,在这个问题上,我单击了一个按钮,该按钮依次保存一个项目并关闭框架。当单击方法完成时,它仍然在寻找框架y,但是站在框架x上,因此它崩溃了。

随之而来的问题是在使用:

代码语言:javascript
复制
driver.findElement(By.x("selector")).click(); 

框架正在切换,在框架中,它仍然试图定位前一个活动帧(此时不可见)。

Im在帧PegaGadget2Ifr,但结束于PegaGadget1Ifr固化点击。

这就是我正在运行的代码:

代码语言:javascript
复制
    public void saveProjectAsDraft(){
        Project_page pp = new Project_page(FDMPortal.getActiveFrameId(true), testEnv);
        FDMObjectsBean.setProject_page(pp);
        pp.saveDraft();
    }

public Workplace_details_page saveDraft(){
        findElement(SAVE_DRAFT).click();
        return new Workplace_details_page(getActiveFrameId(true),testEnv);
    }

得到这条错误信息。

代码语言:javascript
复制
org.openqa.selenium.NoSuchElementException: no such element: Unable to locate element: {"method":"css selector","selector":"#PegaGadget2Ifr"}
  (Session info: chrome=99.0.4844.74)
For documentation on this error, please visit: https://www.seleniumhq.org/exceptions/no_such_element.html
os.version: '10.0', java.version: '1.8.0_312'
Driver info: org.openqa.selenium.chrome.ChromeDriver
Capabilities {acceptInsecureCerts: false, browserName: chrome, browserVersion: 99.0.4844.74, chrome: {chromedriverVersion: 99.0.4844.51 (d537ec02474b5..., userDataDir: x, goog:chromeOptions: {debuggerAddress: localhost:63949}, javascriptEnabled: true, networkConnectionEnabled: false, pageLoadStrategy: normal, platform: WINDOWS, platformName: WINDOWS, proxy: Proxy(), setWindowRect: true, strictFileInteractability: false, timeouts: {implicit: 0, pageLoad: 300000, script: 30000}, unhandledPromptBehavior: dismiss and notify, webauthn:extension:credBlob: true, webauthn:extension:largeBlob: true, webauthn:virtualAuthenticators: true}
Session ID: x
*** Element info: {Using=id, value=PegaGadget2Ifr}
    at sun.reflect.GeneratedConstructorAccessor16.newInstance(Unknown Source)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
    at org.openqa.selenium.remote.http.W3CHttpResponseCodec.createException(W3CHttpResponseCodec.java:187)
    at org.openqa.selenium.remote.http.W3CHttpResponseCodec.decode(W3CHttpResponseCodec.java:122)
    at org.openqa.selenium.remote.http.W3CHttpResponseCodec.decode(W3CHttpResponseCodec.java:49)
    at org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:158)
    at org.openqa.selenium.remote.service.DriverCommandExecutor.execute(DriverCommandExecutor.java:83)
    at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:552)
    at org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:323)
    at org.openqa.selenium.remote.RemoteWebDriver.findElementById(RemoteWebDriver.java:372)
    at org.openqa.selenium.By$ById.findElement(By.java:188)
    at org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:315)
    at com.pega.framework.PegaWebDriverImpl.switchToActiveFrame(PegaWebDriverImpl.java:613)
    at com.pega.framework.PegaWebElementImpl.click(PegaWebElementImpl.java:513)
    at com.pega.framework.PegaWebElementImpl.click(PegaWebElementImpl.java:407)
    at com.pega.crm.workobjects.Project_page.saveDraft(Project_page.java:166)
    at stepdefs.WorkplaceStepDefs.saveProjectAsDraft(WorkplaceStepDefs.java:390)```
EN

回答 2

Stack Overflow用户

发布于 2022-04-07 08:10:20

首先切换到元素所在的帧,然后对元素执行活动。使用一种可用的方法

代码语言:javascript
复制
switchTo().frame(Index)
switchTo().frame(Web Element)
switchTo().frame(Id or name)
票数 0
EN

Stack Overflow用户

发布于 2022-04-07 08:18:56

当上一帧PegaGadget2Ifr关闭时,一种理想的方法是首先切换到默认内容

代码语言:javascript
复制
driver.switchTo().defaultContent();

然后尝试切换到PegaGadget1Ifr帧。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71778411

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档