Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何在不使用绝对xpath的情况下识别驻留在iframe中的元素?

如何在不使用绝对xpath的情况下识别驻留在iframe中的元素?
EN

Stack Overflow用户
提问于 2019-05-21 03:46:29
回答 2查看 318关注 0票数 1

我正在编写一个Selenium脚本来检查页面中的行数:

行在iframe中,所以我不能不使用/*[starts-with(@ id,'someid')来查找元素的数量,因为selenium webdriver无法使用id或相对xpath在iframe中定位元素。只有绝对xpath在工作。

我的行的绝对xpath是这样的

第1行:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
/html[1]/body[1]/form[1]/table[1]/tbody[1]/tr[1]/td[1]/table[1]/tbody[1]/tr[1]/td[1]/div[1]/table[1]/tbody[1]/tr[1]/td[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[2]/div[1]/table[1]/tbody[1]/tr[1]/td[1]/div[2]/div[1]/div[1]/table[1]/tbody[1]/tr[2]/td[1]/div[1]/table[1]/tbody[1]/tr[3]/td[1]

第2行:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
/html[1]/body[1]/form[1]/table[1]/tbody[1]/tr[1]/td[1]/table[1]/tbody[1]/tr[1]/td[1]/div[1]/table[1]/tbody[1]/tr[1]/td[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[2]/div[1]/table[1]/tbody[1]/tr[1]/td[1]/div[2]/div[1]/div[1]/table[1]/tbody[1]/tr[2]/td[1]/div[1]/table[1]/tbody[1]/tr[5]/td[1]

因此,如何使用以以下内容开头的绝对xpath:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
/html[1]/body[1]/form[1]/table[1]/tbody[1]/tr[1]/td[1]/table[1]/tbody[1]/tr[1]/td[1]/div[1]/table[1]/tbody[1]/tr[1]/td[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[2]/div[1]/table[1]/tbody[1]/tr[1]/td[1]/div[2]/div[1]/div[1]/table[1]/tbody[1]/tr[2]/td[1]/div[1]/table[1]/tbody[1]/tr[

HTML

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<iframe id="MasterSplitter_mainContent_ASPxPageControlManageProgramme_ucEnrolment_Programme_Details_CBPnlDetail_ucFunding_GrantCalculator_pcGC_CIF-1" title="" src="../Funding/FundingGrantCalculator.aspx?SessionKey=k6ML680ffjM3LcWqMwUzNOe33dRU4xgBxVoW%2ftYHVWJs1Re6Yr4oTA%3d%3d"
  scrolling="auto" frameborder="0" style="height: 100%; width: 100%;" xpath="1">


<tr ng-repeat-start="funding in data.fundings" ng-show="data.fundings.length > 0 &amp;&amp; !ShowLoading" ng-class="GetFundingRowCSSClass(funding)" data-qo-theme="danger" data-nq-tooltip="" data-qo-placement="top-center" data-qs-title="" class="ng-scope AvailableFunding" style="">

<tr ng-repeat-start="funding in data.fundings" ng-show="data.fundings.length > 0 &amp;&amp; !ShowLoading" ng-class="GetFundingRowCSSClass(funding)" data-qo-theme="danger" data-nq-tooltip="" data-qo-placement="top-center" data-qs-title="" class="ng-scope AvailableFunding" xpath="1">

</iframe>
EN

回答 2

Stack Overflow用户

发布于 2019-05-21 06:43:11

假设当前焦点在浏览器窗口上,并且要从框架中提取行数。因此,焦点已移至框架。

这是使用SwichTo()方法完成的。driver.SwitchTo().Frame(0)。这里0表示是否只打开了一个帧。可以通过Frameindex、FrameName和IwebElement选择帧。

切换到Frame后,使用xpath列出所有tr节点。

//tr[包含(@ng-repeat-start,"funding in data.fundings")

票数 3
EN

Stack Overflow用户

发布于 2019-05-21 04:52:32

首先,您需要切换到iframe,为此,您可以使用以下代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
driver.SwitchTo().Frame(By.CssSelector("iframe[id*='MasterSplitter_mainContent']"));  

一旦进入框架内部,就可以使用此xpath列出所有tr节点。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
//tr[contains(@ng-repeat-start,"funding in data.fundings")
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56230804

复制
相关文章
伪元素的作用_获取iframe中的元素
获取网页源代码也获取不了这些动态渲染的数据 所以用简单的,但是有点麻烦的方法 使用selenium执行js,或者直接在浏览器里面执行js
全栈程序员站长
2022/11/04
7K0
伪元素的作用_获取iframe中的元素
selenium元素定位中css或者xpath不选择某一类元素
例如,下列标签中,不选择class为disable的span标签 则 这样写 dd:not(.disabled) > span 或者 dd:not(.disabled) span
小黑同学
2020/08/16
1.8K0
selenium元素定位中css或者xpath不选择某一类元素
Spring在无RedirectAttributes的情况下(如Interceptor中)使用Flash scope
判断逻辑很简单,但是重定向的时候需要前台有消息提示,如果是在Controller中,可以在方法上注入RedirectAttributes参数,但是Interceptor中默认没有这个参数,那么我们如何实现RedirectAttributes的flashMessage功能呢?
飞奔去旅行
2019/06/13
5.4K0
Iframe使覆盖其上的绝对定位元素无法响应click事件
实验证实,但疑惑的是为什么最开始可以,这问题还需要排查。 重新启动浏览器后恢复正常。Safari和Firefox也正常。 ??Chrome的问题?? 缓存的问题?我把draggable删了就出问题了。不太好排查,算了。
gojam
2019/11/04
2.3K0
Scrapy中Xpath的使用
请注意,本文编写于 990 天前,最后修改于 990 天前,其中某些信息可能已经过时。
曼亚灿
2023/05/17
9150
JavaScript中给 iframe 中的元素添加点击事件
最近在开发一个浏览器插件,需要抓取掌中云平台的数据,由于该平台的页面结构是采用iframe嵌套的方式加载的, 所以在添加事件的时候遇到了一点小麻烦,现特此将解决方法记录如下,以供大家复制粘贴。
越陌度阡
2022/11/27
3.6K0
如何在 WordPress 中嵌入 iFrame
Iframe 是一种将网页嵌入到另一个页面的内容中的方法。这是通过使用 HTML 元素、外部网站的 URL 以及窗口在您的网站上的外观参数来实现的。
海拥
2022/12/11
2.4K0
如何在 WordPress 中嵌入 iFrame
【分享】影刀使用xpath捕获指定的元素
//*[@class='discuss_detail_header___3LhnQ']/h1
唯一Chat
2023/10/17
5800
【分享】影刀使用xpath捕获指定的元素
图片不变形,宽高不超出父元素的情况下旋转图片
如题,具体的效果见这里 。做这样的效果的难点在于,计算没旋转前图片的宽,高和旋转后的宽高。
前端GoGoGo
2018/08/24
2.1K0
layui打开iframe窗口不刷新的问题
这个问题可能是我工作以来,最死磕不算bug的一个了,晚上熬夜到三点钟,终于找到了解决的办法。
王小婷
2019/04/29
4K0
layui打开iframe窗口不刷新的问题
Selenium面试题
自动化测试使用自动化工具来编写和执行测试用例,执行自动化测试套件不需要人工参与。测试人员更喜欢自动化工具来编写测试脚本和测试用例,然后组合成测试套件。 自动化测试允许使用专门的工具来自动执行手动设计的测试用例,而无需任何人工干预。自动化测试工具可以访问测试数据,控制测试的执行并将实际结果与预期结果进行比较。因此,生成被测系统的详细测试报告。
测试小兵
2023/03/16
8.6K0
Selenium面试题
DevOps如何在不牺牲安全性的情况下迁移到云端
企业采用DevOps意味着开发进行将比以往任何时候都要快。那么如何确保一切都是安全的,尤其是将业务迁移到云端时? 调研机构Gartner公司预测, 2022年全球云计算服务市场规模和增长率几乎是整体I
CloudBest
2019/09/17
6900
DevOps如何在不牺牲安全性的情况下迁移到云端
chrome xpath的使用
最近研究爬虫的时候,发现chrome也支持xpath,用法如下,在console中输入
用户2936342
2018/08/27
1.1K0
chrome xpath的使用
Python+Selenium 定位页面
1.跳转到Frame/Iframe ,再定位元素 理解:frame的实质,frame中实际上是嵌入了另一个页面,而webdriver每次只能在一个页面识别,因此需要先定位到相应的frame,对那个页面里的元素进行定位
py3study
2020/01/15
1.3K0
25个经典Selenium自动化面试题,赶紧收藏
② 页面加载时间过慢,需要查找的元素程序已经完成,单页面还未加载,此时可以加载页面等待时间
全栈程序员站长
2022/08/31
2.6K0
如何在遍历的同时删除ArrayList 中的元素
我们说不能在foreach 中进行,但是使用普通的for 循环还是可以的,因为普通for 循环并没有用到Iterator 的遍历,所以压根就没有进行fail-fast 的检验。 List<String> userNames = new ArrayList<String>() {{ add("Hollis"); add("hollis"); add("HollisChuang"); add("H"); }}; for (int i = 0; i < 1; i++) { if (userNames.get(i).equals("Hollis")) { userNames.remove(i); } } System.out.println(userNames); 这种方案其实存在一个问题,那就是remove 操作会改变List 中元素的下标,可能存 在漏删的情况。
小马哥学JAVA
2022/11/21
3.8K0
根据获取内部元素的高度,设置iframe的高度
iframe 是一个非常迷得一个元素,很难直接获取其内部元素的高度。 下面分享一个方法,可以获取 iframe 内部元素的高度: function setIframeHeight(id){     try{         var iframe = document.getElementById(id);         if(iframe.attachEvent){             iframe.attachEvent("onload", function(){                 i
德顺
2019/11/13
9.3K0
如何在 React 中获取点击元素的 ID?
在 React 应用中,我们经常需要根据用户的点击事件来执行相应的操作。在某些情况下,我们需要获取用户点击元素的唯一标识符(ID),以便进行进一步的处理。本文将详细介绍如何在 React 中获取点击元素的 ID,并提供示例代码帮助你理解和应用这个功能。
网络技术联盟站
2023/06/07
3.5K0
点击加载更多

相似问题

如何在xpath相同的情况下识别selenium中的元素

30

使用Xpath (selenium <iframe> )定位<iframe>中的HTML元素

22

绝对路径: Selenium Xpath无法识别元素

20

如何使用Xpath选择iframe中的元素?

11

使用xpath识别元素的困难

20
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文