【发布时间】:2018-07-25 02:37:05
【问题描述】:
我有一个脚本,可以在this page 底部单击“显示更多”四次以显示更多评论线程。
即使我的XPATH 将选择所有“查看更多回复.../查看更多回复...”元素,脚本也不会最终单击所有这些元素。 (在撰写本文时,它只点击了 13 个元素中的 7 个。)
XPath 选择器
//ui-view//a[contains(@class, "commentAction")]
脚本部分(很长,如果您想/需要看更多内容,请告诉我。):
tab_comments = browser.find_elements_by_xpath('//a[@gogo-test="comments_tab"]')
if len(tab_comments) > 0:
browser.implicitly_wait(5)
try:
comments_count = int(''.join(filter(str.isdigit, str(tab_comments[0].text))))
except ValueError:
comments_count = 0
if comments_count > 0:
# 1. Switch to Comments Tab
tab_comments[0].click()
# 2. Expose Additional Threads
show_more_comments = WebDriverWait(browser, 10).until(
EC.element_to_be_clickable((By.XPATH, '//ui-view//a[text()="show more"]'))
)
clicks = 0
while clicks <= 3:
try:
clicks += 1
show_more_comments.click()
except Exception:
break
# 3. Expand All Threads
see_n_more_replies = browser.find_elements_by_xpath('//ui-view//a[contains(@class, "commentAction")]')
for idx, see_replies in enumerate(see_n_more_replies):
print('\n\n\n\nidx: ' + str(idx) + '\n\n\n\n')
see_replies.click()
按钮是否需要在视图中才能单击它们?(其他按钮似乎不是这种情况,但此时我正在抓住稻草。 )
问题是我在步骤# 4. ... 中解析了 cmets,并且由于它不会以多个响应扩展所有线程,这是它应该做的,这些字段在日志中变为空.
不会引发错误或异常。
我正在使用 Firefox/geckodriver。
【问题讨论】:
标签: python selenium selenium-webdriver xpath geckodriver