flyps 发表于 2023-6-1 22:10:14

selenium如何获取当前iframe的ID或name?

selenium有时需切入iframe才能定位到元素,在切换iframe框架前,我想先获取当前iframe的ID或name?请问有什么方法?谢谢

歌者文明清理员 发表于 2023-6-1 22:10:15

难道你是这个意思?
css selector:
from selenium import webdriver
import time as t, bs4 as b
driver = webdriver.Chrome()
driver.get("https://www.114514.com")
t.sleep(1)
soup = b.BeautifulSoup(driver.page_source, 'lxml')
tag = soup.select_one("css选择器")
print(tag['id'],tag['name'])
xpath:
from selenium import webdriver
import time as t
from lxml import html
driver = webdriver.Chrome()
driver.get("https://www.114514.com")
t.sleep(1)
tree = html.fromstring(driver.page_source)
tag = tree.xpath("你的xpath")
tag = html.tostring(tag,encoding='unicode')
print(tag)
pip install bs4 lxml

歌者文明清理员 发表于 2023-6-1 22:10:57

本帖最后由 歌者文明清理员 于 2023-6-1 22:14 编辑

f12查看

isdkz 发表于 2023-6-1 22:12:39

对不起,但是目前的Selenium API并未提供一个直接的方法来获取当前iframe的id或name。你在一个特定的iframe中工作时,Selenium不存储该iframe的引用或任何关于它的信息。当你切换到一个iframe时,你只是告诉Selenium在那个特定的上下文中执行后续的命令。

如果你需要在不同的iframes之间切换,你可能需要在切换到一个新的iframe之前,自己保存你之前所在的iframe的id或name。

在Selenium中,你可以使用 switch_to.default_content() 来切回主文档。如果你需要切换回之前的iframe,你需要再次调用 switch_to.frame() 并使用你保存的id或name。

这里有一个例子展示了如何在iframes之间切换:

# 假设你开始在主文档中

# 切换到一个iframe
driver.switch_to.frame('some-frame-id')

# 执行一些操作

# 切换回主文档
driver.switch_to.default_content()

# 现在你可以切换到另一个iframe,或者切回你之前的iframe
driver.switch_to.frame('some-other-frame-id')

# 或者
driver.switch_to.frame('some-frame-id')


希望这对你有所帮助!
页: [1]
查看完整版本: selenium如何获取当前iframe的ID或name?