当前位置: 首页 > 知识库问答 >
问题:

使用selenium webdriver找到javascript创建的元素

戚俊健
2023-03-14
<div id="zm-view-frame" class="fade in"><div class="zm-view-header"><div class="zm-view-back"><a onclick="WFLandingpage.closePreview();" id="zm-view-close" class="button" href="javascript:void(0);"><span>Close</span></a></div><div id="zm-view-button"><a href="javascript:void(0);" onclick="WFLandingpage.showDesktop(this)" class="zm-display-desktop"><span>Desktop</span></a><a href="javascript:void(0);" onclick="WFLandingpage.showTablet(this)" class="zm-display-tablet"><span>Tablet</span></a><a href="javascript:void(0);" onclick="WFLandingpage.showMobile(this)" class="zm-display-phone"><span>Mobile</span></a><a href="javascript:void(0);" onclick="WFLandingpage.rotateView()" class="zm-display-rotate"><span>Rotate</span></a></div></div><iframe id="zm-display-iframe" src="page=mvc_landingpages&amp;act=templatepage&amp;preview=1&amp;templateId=landingpage3" style="padding-top: 63px; margin: 0px auto;" scrolling="yes" width="100%" height="609"></iframe></div>
this.wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("zm-view-frame")));
Tester.Browser.findElement(By.id("zm-view-frame")).click();

当然,我已经定义了这一点。等等:

public WebDriverWait wait = new WebDriverWait(Tester.Browser, 100);

我得到一个等待超时例外

我甚至用了很多类型的By,比如Xpath,css选择器,类...但是仍然没有运气.

this.wait.until(ExpectedConditions.frameToBeAvailableAndSwitchToIt(locator));

解决方案:所以我需要返回到defaut上下文(返回到父上下文),我的代码是这样的:

Tester.Browser.switchTo().defaultContent();

多谢@naveen提醒我查那个案子:)。

共有1个答案

商飞龙
2023-03-14

我发现了bug并有了解决方案

原因:在上面的代码之前,我有几行代码来检查iframe是否可用,下面的代码如下:

this.wait.until(ExpectedConditions.frameToBeAvailableAndSwitchToIt(locator));

而且我不知道代码make驱动程序切换到那个iframe,所以我上面的查找元素的代码在错误的地方(上下文)。

Tester.Browser.switchTo().defaultContent();
 类似资料:
  • 我使用jqui中的draggable小部件。 我希望当我的draggable元素拖拽到某个区域后,能产生一个新元素“#block”,并且这个新元素能够被draggable的"snap"所识别 我的代码如下: 我发现#block元素能够正确被创建,并且没有任何拼写错误,但是"#ball"元素仍然无法识别#block元素,也无法吸附上去。我尝试使用refreshPoistion:true来更新drag

  • 问题内容: 我的网站上有一个选择控件。我正在使用页面对象与页面进行交互。如果我这样做(在我的课程下的前两行和我的方法中) 它以空指针失败。我也尝试了没有。 现在,如果我在我的方法中执行此操作,则一切正常,然后选择正确的项目 这是该控件的实际网页摘要(已编辑以保护无辜者) 让我说我可以解决我的问题, 但是 我不明白为什么“ 正常 ”路径无法正常工作。 问题答案: 那是因为该类具有以下构造函数: 见J

  • 本文向大家介绍如何使用JavaScript和CSS创建可拖动的HTML元素?,包括了如何使用JavaScript和CSS创建可拖动的HTML元素?的使用技巧和注意事项,需要的朋友参考一下 要使用JavaScript和CSS创建可拖动的HTML元素,代码如下- 示例 输出结果 上面的代码将产生以下输出- 通过拖动来移动div时-

  • 我试图在TypeScript中创建一个格式正确的SVG元素: 但是,在中出现以下错误

  • 问题内容: 我有一个JavaScript函数,该函数创建具有3行2单元格的表。 谁能告诉我如何使用我的函数创建下表(我需要针对我的情况进行此操作)? 这是下面给出的我的javascript和html代码: 问题答案: 这应该起作用(对上面的代码进行一些改动)。

  • 问题内容: 我目前正在使用python 3.6.5,selenium版本3.14.0 如果我创建了如下所示的网络元素: 我无法使用以下内容: 我已经仔细检查过是否成功创建了该元素,但是使用selenium包提供的API(例如find_element_by_id和上面的脚本)无法找到该元素。 问题:在execute_script之后注入新元素之后,我还需要做其他事情吗?还是目前,这不可能吗? 我可以