如何在网页上单击所有带有特定文本的按钮,一个接一个
how to click on a webpage all buttons with specific text, one by one
我有 this quora 网页作为示例
它包含 4 个 "View Upvoters" 按钮
使用这段代码,我想获取所有 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)
我得到 'view upvoters' 作为结果
但是当我打印剩余部分时,我得到的结果是空的,
print(upvoter_list[1].text)
有什么问题?
使用这个(更新)
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)
尝试 get_attribute("textContent")
而不是 text
。
How to get inner text of an element in Selenium?
我有 this quora 网页作为示例
它包含 4 个 "View Upvoters" 按钮 使用这段代码,我想获取所有 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)
我得到 'view upvoters' 作为结果 但是当我打印剩余部分时,我得到的结果是空的,
print(upvoter_list[1].text)
有什么问题?
使用这个(更新)
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)
尝试 get_attribute("textContent")
而不是 text
。
How to get inner text of an element in Selenium?