Selenium:获取下一个按钮点击内容
Selenium : getting next button click content
在 Quora 网站上,我试图通过单击 'view upvoters' 来获取每个答案的投票者姓名,但我没有得到正确的结果。
例如,在 this Quora 问题 link 上,您有两个答案,第一个有 5 个投票者,第二个有 2 个。我从下面的代码得到的结果是 5,5 .
all_upvotes= browser.find_elements_by_class_name('ExpandedVoterListItem')
for p in all_upvotes:
p.click()
time.sleep(10)
wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR, 'div.modal_content.modal_body')))
upvoter_name = wait.until(EC.presence_of_all_elements_located((By.CSS_SELECTOR, 'span.feed_item_answer_user')))
time.sleep(10)
print ('number of upvoters found for this answer %d' % len(upvoter_name))
# print upvoters names
for line in upvoter_name:
print(line.text)
看起来你并不是每次都select "View Upvoters" link,至少在你提供的脚本中是这样。相反,请使用以下操作顺序:
all_upvotes= browser.find_elements_by_link_text('View Upvoters') # Finds all "View Upvoters" buttons (they are links actually)
for p in all_upvotes:
p.click() # Opens list of upvoters
# No need to sleep or wait for anything else, just wait for items you want, namely the name of upvoter (which is again a link):
upvoter_name = wait.until(EC.presence_of_all_elements_located((By.CSS_SELECTOR, 'a.user')))
print ('number of upvoters found for this answer %d' % len(upvoter_name))
# print upvoters names
for line in upvoter_name:
print(line.text)
# Now we need to close list of upvoters, to open the next one on next iteration of the loop:
close_button = wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR, 'span.modal_close')))
close_button.click()
在 Quora 网站上,我试图通过单击 'view upvoters' 来获取每个答案的投票者姓名,但我没有得到正确的结果。 例如,在 this Quora 问题 link 上,您有两个答案,第一个有 5 个投票者,第二个有 2 个。我从下面的代码得到的结果是 5,5 .
all_upvotes= browser.find_elements_by_class_name('ExpandedVoterListItem')
for p in all_upvotes:
p.click()
time.sleep(10)
wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR, 'div.modal_content.modal_body')))
upvoter_name = wait.until(EC.presence_of_all_elements_located((By.CSS_SELECTOR, 'span.feed_item_answer_user')))
time.sleep(10)
print ('number of upvoters found for this answer %d' % len(upvoter_name))
# print upvoters names
for line in upvoter_name:
print(line.text)
看起来你并不是每次都select "View Upvoters" link,至少在你提供的脚本中是这样。相反,请使用以下操作顺序:
all_upvotes= browser.find_elements_by_link_text('View Upvoters') # Finds all "View Upvoters" buttons (they are links actually)
for p in all_upvotes:
p.click() # Opens list of upvoters
# No need to sleep or wait for anything else, just wait for items you want, namely the name of upvoter (which is again a link):
upvoter_name = wait.until(EC.presence_of_all_elements_located((By.CSS_SELECTOR, 'a.user')))
print ('number of upvoters found for this answer %d' % len(upvoter_name))
# print upvoters names
for line in upvoter_name:
print(line.text)
# Now we need to close list of upvoters, to open the next one on next iteration of the loop:
close_button = wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR, 'span.modal_close')))
close_button.click()