如何点击网页上所有带有特定文本的按钮,一个接一个

时间:2018-08-28 09:33:33

标签: python api selenium web-scraping quora

我有一个this 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)

出什么问题了?

2 个答案:

答案 0 :(得分: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)

答案 1 :(得分:0)

尝试使用get_attribute("textContent")而不是text

How to get inner text of an element in Selenium?