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

2024-10-02 06:26:37 发布

您现在位置:Python中文网/ 问答频道 /正文

嘿!你知道吗

我不得不使用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>

但是当我用chromedev工具选择并检查一个元素时 它说在<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">标记中的所有内容


Tags: 文件代码标记divid站点网站selenium
1条回答
网友
1楼 · 发布于 2024-10-02 06:26:37

我的猜测是<div id="pucContent"></div>在开头,在页面加载后填充。所以你真正需要等待的是内在的东西。如果检查时该元素中有<select>,请尝试如下等待:

WebDriverWait(browser, 20).until(EC.visibility_of_element_located((By.CSS_SELECTOR, '#pucContent select'))).find_element_by_tag_name('select')

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

相关问题 更多 >

    热门问题