在一个frame中怎么获取另一个frame的元素的值?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在一个frame中怎么获取另一个frame的元素的值?相关的知识,希望对你有一定的参考价值。

结构如下
<frameset>
<frame name="topFrame" id="topFrame">
<input type="text" id="leftUserId" value="$_USER.userId " />
</frame>
<frameset>
<frame name="leftFrame" id="leftFrame">
<input type="text" id="leftUserId" value="$_USER.userId " />
</frame>
<frame name="mainFrame" id="mainFrame">
<input type="text" id="mainUserId" value="$_USER.userId " />
</frame>
</frameset>
</frameset>
我在leftFrame里面写了下面这段js代码:
var top = window.parent.topFrame;
if(document.getElementById("leftUserId").value !=
top.document.getElementById("topUserId").value)
parent.topFrame.location.href = "top.do"

其中top可以取到。
同样的,我在mainFrame里面写了下面js代码:
var top = window.parent.topFrame;
if(document.getElementById("mainUserId").value !=
top.document.getElementById("topUserId").value)
parent.topFrame.location.href = "top.do"

为什么这里的top是null呢?

在leftFrame或者mainFrame里取topFrame下的值为:
alert($(parent.frames["topFrame"].document).find("#leftUserId").val());
如果正解,请点赞,比较细致的看完了你的代码,给出答案。
参考技术A 这样document.getElementById("f_date").value

Python+Selenium 定位页面元素

1.跳转到Frame/Iframe ,再定位元素
理解:frame的实质,frame中实际上是嵌入了另一个页面,而webdriver每次只能在一个页面识别,因此需要先定位到相应的frame,对那个页面里的元素进行定位

1.1方法一
如果iframe有name或id的话,直接使用switch_to_frame("name值")或switch_to_frame("id值")。如下:
driver=webdriver.Firefox()
driver.get(r‘http://www.126.com/‘)
driver.switch_to_frame(‘x-URS-iframe‘) #需先跳转到iframe框架
username=driver.find_element_by_name(‘email‘)
username.clear()

1.1方法二
如果iframe没有name或id的话,则可以通过下面的方式定位:
#先定位到iframe
elementi= driver.find_element_by_class_name(‘APP-editor-iframe‘)
#再将定位对象传给switch_to_frame()方法
driver.switch_to_frame(elementi)

PS:完成操作后,可以通过switch_to.parent_content()方法跳出当前iframe,或者还可以通过switch_to.default_content()方法跳回最外层的页面

2.Xpath 层级定位
2.1 通过绝对路径定位
例如:find_element_by_xpath("/html/body/div/div/div[2]/div[3]/a[2]").click()

绝对路径是从当前元素往前数最近的一个html 开始数的。
2.2 利用元素属性定位
地图有三个属性,href,name,class。

driver.findElement(By.xpath("//a[@name=‘tj_trnews‘]")).click();

    driver.findElement(By.xpath("//a[@href=‘http://news.baidu.com‘]")).click()

driver.findElement(By.xpath("//a[@class=‘mnav‘]")).click();

    driver.findElement(By.xpath("//a[contains(@href,"http://map.baidu.co")]")).click();

参考资料:
https://www.cnblogs.com/csj2018/p/9194618.html 
https://www.cnblogs.com/yufeihlf/p/5689042.html
http://www.cnblogs.com/yufeihlf/p/5717291.html 

以上是关于在一个frame中怎么获取另一个frame的元素的值?的主要内容,如果未能解决你的问题,请参考以下文章

自动化测试中怎么获取frame页面上的元素

apicloud怎么实现frame跳转到另一个frame

Delphi中的Form中怎么调用Frame,ShowFrame()好像可以

在 Pandas 中,如何根据另一个 Data Frame 从 Data Frame 中删除行?

在 R 中获取 data.frame 中元素差异的最快方法

怎么获取iframe里面的元素