使用selenium的Python网页抓取:定位模态元素时遇到麻烦



我想去http://ted.com/talks,点击"查看所有主题"中的"主题"下拉菜单,然后点击一个随机字母标题,如"C"或"D-E"。但是,我不知道如何在模态弹出框中找到该特定字母标题的元素。

当我点击"检查元素"时,字母标题元素是这样的:

<li class="topic-select__range">
  <a class = "topic-select__range__link" href="#" data-index="0">A-B</a>
</li>
<li class="topic-select__range">
  <a class = "topic-select__range__link" href="#" data-index="1">C</a>
</li>
<li class="topic-select__range">
  <a class = "topic-select__range__link" href="#" data-index="2">D-E</a>
</li>
... etc.

我的程序可以看到所有的主题都很好,但无法找到元素错误,当我试图点击字母标题。这是目前为止我的代码片段的样子:

# Each header is assigned a number. A header is picked at random, and clicked. 
# [ERROR: Cannot locate element.]
random_letter = random.randint(0, 8)
topics_window = browser.find_element_by_class_name("select-modal__content topic-select") # error here, when program tries to find modal popup or tags within it
letter_headers = topics_window.find_element_by_class_name("topic-select__range__link")
letter_headers[random_letter].click()

我找不到使用selenium访问模态JavaScript内容的方法。相反,我找到了一种使用web API的方法。

最新更新