如何通过Selenium查找由javascript生成的标记(我猜)

时间:2016-11-25 11:10:10

标签: javascript python selenium

Heyo!

我必须使用Selenium从公司网站下载文件,并且最后一步陷入困境:

当我在网站上按Ctrl + U时,代码只包含基本标签,而有些标签是空的:

<div ng-show="viewContainer === 'PUC'" 
    class="ng-app-element deny-animation-change" animate="fade" 
    id="pucWrapper" cellspacing="0" cellpadding="0" style="width: 100%; height: 100%;">

    <div id="pucHeader" cellspacing="0" cellpadding="0">
      <div id="pucMenuBar"></div>
      <div id="pucPerspectives"></div>
      <div id="pucToolBar"></div>
      <div id="pucUserDropDown"></div>
    </div>

    <div id="pucContent"></div>
  </div>

但是当我通过Chrome开发工具选择并检查元素时 它说<div id="pucContent">中有很多标签,如何找到Selenium的“隐形”<select>标签?

以下代码以NoSuchElementException

返回
WebDriverWait(browser, 20).until(EC.visibility_of_element_located((By.ID, 'pucContent'))).find_element_by_tag_name('select')

我猜javascript会在<div id="pucContent">标记

中创建新标记和所有内容

1 个答案:

答案 0 :(得分:0)

我的猜测是`likes': undefined method `split' for []:Array (NoMethodError) from `block in ' from `block in describe' from `measure' from `describe' from ` ' 在开头就存在,并在页面加载后填充。所以你在等待中真正需要等待的是内在的东西。如果您在检查时在elemeint中有<div id="pucContent"></div>,请尝试这样等待:

<select>

请记住,网页的“page_source”只是在请求文档时传递的内容,它不会包含在加载原始文档后动态加载的任何内容。