【问题标题】:How do I access the iframe that does not have an id, name or class如何访问没有 ID、名称或类的 iframe
【发布时间】:2022-02-02 15:37:34
【问题描述】:

我有以下 iframe:


<iframe _ngcontent-oyp-c7="" allow="fullscreen" allowfullscreen="" mozallowfullscreen="" scrolling="yes" webkitallowfullscreen="" src="https://launch.spribegaming.com/games/launch/aviator?user=164291&amp;token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJQdW50ZXJJZCI6IjE2NDI5MSIsIm5iZiI6MTY0MzcyMjU5NCwiZXhwIjoxNjQzNzQ0MTk0LCJpYXQiOjE2NDM3MjI1OTR9.7st61IJ2K4nOHIhezeg9exDUk-mh0t21e73Dq5QQdbY&amp;lang=EN&amp;currency=ZAR&amp;operator=hollywoodbets&amp;return_url=https://new.hollywoodbets.net" frameborder="0"></iframe>

我如何获取它的元素,因为它没有 ID、名称或类。还有另一种访问方式吗?它是一个单一的 iframe,所以我不能通过像 switchTo.frame(int frame number)

这样的索引来调用它

【问题讨论】:

  • 如果它是您页面中唯一的框架,那么您可以像这样简单地调用:将元素存储在webelement中:&lt;WebElement&gt; String frame = driver.find_element_by_xpath("//iframe")然后您可以切换到框架:switchTo.frame(frame)我是python伙计,所以我在java中的语法可能不正确,但概念应该是相同的。如果您有多个 iframe,则可能需要搜索并找到具有唯一属性的 iframe:例如://iframe[@allow='fullscreen'] 或 iframe 的索引//iframe[2]

标签: java html selenium iframe webdriver


【解决方案1】:

driver.switchTo.frame 也接受网络元素对象参数。

frame_element = driver.find_element(...)
driver.switchTo.frame(frame_element)

为了在这种情况下定位 iframe,我建议使用 XPATH。

仅适用于单个 iframe

//iframe

对于多个 iframe,您必须找到一些独特的属性过滤器

//iframe[@_ngcontent-oyp-c7]

//iframe[contains(@src, 'spribegaming.com/games')]

甚至可以将条件与 or/and xpath 运算符结合起来:

//iframe[(@scrolling='yes') or (@allow='fullscreen')]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-10-03
    • 2023-04-02
    • 1970-01-01
    • 1970-01-01
    • 2021-11-02
    • 2011-01-16
    • 1970-01-01
    相关资源
    最近更新 更多