无法找到Selenium Python中存在的帧

时间:2017-08-08 14:59:51

标签: python selenium

我试图在Python中使用Selenium选择一个框架。该网页包含许多嵌套在框架集元素下的框架。我尝试使用以下命令选择名为“fraMenu”的框架:

driver.switch_to.frame(driver.find_element_by_name( “fraMenu”))

但是我收到NoSuchElementException并显示错误消息:消息:无法找到元素:$users = User::all(); $object = new \Illuminate\Database\Eloquent\Collection; $object->add( [ "name"=>'John', "status"=>"pending", "created_at"=> "-0001-11-30 00:00:00", "updated_at"=> "-0001-11-30 00:00:00", ] ); // Trying to pull new to the main; $users->push($object);

完整的代码如下:

[name="fraMenu"]

2 个答案:

答案 0 :(得分:1)

您可以使用以下方法实际选择iFrame: -

  • frame(index)
  • frame(帧的名称[或]帧的ID)
  • frame(WebElement frameElement)
  • defaultContent()

因此,您可以通过传递有关帧的任何上述信息进行切换。是的,您需要根据需要的操作每次切换

实施例: -

driver.SwitchTo().Frame("top");

....在框架上执行您的操作

driver.SwitchTo().defaultContent();

driver.SwitchTo().Frame("navigation");

....在框架上执行您的操作

driver.SwitchTo().defaultContent();

....

现在你必须找到嵌套框架的层次结构并逐个切换。

使用chrome dev工具并选择您可以看到层次结构的元素..只需从父级切换到子级,直到您的元素无法到达。执行您的操作并切换回默认值

示例: -

enter image description here

希望它会对你有所帮助:)。

答案 1 :(得分:0)

您是否尝试过一段时间才能找到它?也许框架没有时间加载。我建议你从time.sleep(4)开始,如果它有效,那么试着等到框架加载了预期的条件。