0

我有这个quora 网页作为示例

它确实包含 4 个“查看支持者”按钮 使用此代码,我想获取所有 4 个按钮,以便以后一一单击它们。

upvoter_list = wait.until(EC.presence_of_all_elements_located((By.CLASS_NAME, 'AnswerVoterListModalLink')))

print(len(upvoter_list))给我 4,当我打印第一个元素的文本时这是正确的upvoter_list

print(upvoter_list[0].text) 

结果我得到了“查看赞成票”,但是当我打印剩余的部分时,我得到了空的结果,

print(upvoter_list[1].text)

问题是什么?

4

2 回答 2

1

使用这个(更新)

from selenium import webdriver 
from time import sleep
from bs4 import BeautifulSoup
obj = webdriver.Chrome('path to driver')


list_of_upvoters = []
obj.get('https://www.quora.com/Have-you-ever-countined-to-pursue-someone-who-wasnt-interested-in-you')
sleep(5)
obj.execute_script("window.scrollTo(0, document.body.scrollHeight);")
sleep(5)
obj.execute_script("window.scrollTo(0,1);")
sleep(5)

for p in obj.find_elements_by_class_name('AnswerVoterListModalLink'):
    sleep(5)
    p.click()
    sleep(10)
    for div in obj.find_elements_by_class_name('author_info'):
        list_of_upvoters.append(div.find_element_by_class_name('user').text)
    print(list_of_upvoters)
    list_of_upvoters = []
    sleep(10)
    obj.find_element_by_class_name('modal_close').click()
    sleep(10)
于 2018-08-28T12:36:07.980 回答
0

尝试get_attribute("textContent")代替text.

如何在 Selenium 中获取元素的内部文本?

于 2018-08-28T17:44:22.050 回答