如何自动点击文本"Show more matches"?我的代码不起作用
How can I automatically click on the text "Show more matches"? My code doesn't work
有一个文本按钮,上面写着“显示更多匹配项”,用于向下滚动页面,因为没有更多的结果出来。我想自动按下它,但是我的代码有问题。你能帮帮我吗?
重要提示:它还不在此页面上,但很快就会有第二个按钮“显示更多会议”,因为我向下滚动并找到“显示更多会议”,然后在几个月内如果我向下更进一步,找到第二个按钮“显示更多匹配项”。在页面中还没有第二个按钮,但我想让它也按下那个按钮(这是同一个按钮,所以我认为它并不复杂)。
所以我想按2,也一样,同时按3
P.S:请求的目的和代码仅供个人学习使用,所以个人说教,无盈利。此问题和此代码不用于商业或 profit-making 目的。
driver.get("url")
driver.implicitly_wait(12)
wait = WebDriverWait(driver, 12)
try:
wait.until(EC.element_to_be_clickable((By.CLASS_NAME, "a[class^='event__more event__more--static']"))).click() #because another element <div class="skOT skOT--ot"> obscures it
except Exception as ex:
print('EX:', ex)
更新:在 driver.get 和 link 之前,有这个
torexe_linux = os.popen('/home/xxxxx/.local/share/torbrowser/tbb/x86_64/tor-browser_en-US')
profile = FirefoxProfile('/home/xxxx/.local/share/torbrowser/tbb/x86_64/tor-browser_en-US/Browser/TorBrowser/Data/Browser/profile.default')
profile.set_preference('network.proxy.type', 1)
profile.set_preference('network.proxy.socks', '127.0.0.1')
profile.set_preference('network.proxy.socks_port', 9050)
profile.set_preference("network.proxy.socks_remote_dns", False) #certi la tengono True
profile.update_preferences()
firefox_options = webdriver.FirefoxOptions()
firefox_options.binary_location = '/usr/bin/firefox'
driver = webdriver.Firefox(
firefox_profile=profile, options=firefox_options,
executable_path='/usr/bin/geckodriver')
- 您需要关闭接受 cookies 面板。
- 显示更多按钮出现在页面底部,您需要将其滚动到视图才能单击它。
- 单击它后,您需要等待页面加载才能再次获取该元素,再次滚动到它并再次单击它。
如下:
from selenium.webdriver.common.action_chains import ActionChains
driver.get("link")
driver.implicitly_wait(12)
wait = WebDriverWait(driver, 12)
actions = ActionChains(driver)
wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR, "button#onetrust-accept-btn-handler"))).click()
while(driver.find_elements_by_css_selector('a.event__more.event__more--static')):
show_more = driver.find_element_by_css_selector('a.event__more.event__more--static')
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
actions.move_to_element(show_more).perform()
time.sleep(0.5)
show_more = driver.find_element_by_css_selector('a.event__more.event__more--static')
show_more.click()
time.sleep(3)
有一个文本按钮,上面写着“显示更多匹配项”,用于向下滚动页面,因为没有更多的结果出来。我想自动按下它,但是我的代码有问题。你能帮帮我吗?
重要提示:它还不在此页面上,但很快就会有第二个按钮“显示更多会议”,因为我向下滚动并找到“显示更多会议”,然后在几个月内如果我向下更进一步,找到第二个按钮“显示更多匹配项”。在页面中还没有第二个按钮,但我想让它也按下那个按钮(这是同一个按钮,所以我认为它并不复杂)。
所以我想按2,也一样,同时按3
P.S:请求的目的和代码仅供个人学习使用,所以个人说教,无盈利。此问题和此代码不用于商业或 profit-making 目的。
driver.get("url")
driver.implicitly_wait(12)
wait = WebDriverWait(driver, 12)
try:
wait.until(EC.element_to_be_clickable((By.CLASS_NAME, "a[class^='event__more event__more--static']"))).click() #because another element <div class="skOT skOT--ot"> obscures it
except Exception as ex:
print('EX:', ex)
更新:在 driver.get 和 link 之前,有这个
torexe_linux = os.popen('/home/xxxxx/.local/share/torbrowser/tbb/x86_64/tor-browser_en-US')
profile = FirefoxProfile('/home/xxxx/.local/share/torbrowser/tbb/x86_64/tor-browser_en-US/Browser/TorBrowser/Data/Browser/profile.default')
profile.set_preference('network.proxy.type', 1)
profile.set_preference('network.proxy.socks', '127.0.0.1')
profile.set_preference('network.proxy.socks_port', 9050)
profile.set_preference("network.proxy.socks_remote_dns", False) #certi la tengono True
profile.update_preferences()
firefox_options = webdriver.FirefoxOptions()
firefox_options.binary_location = '/usr/bin/firefox'
driver = webdriver.Firefox(
firefox_profile=profile, options=firefox_options,
executable_path='/usr/bin/geckodriver')
- 您需要关闭接受 cookies 面板。
- 显示更多按钮出现在页面底部,您需要将其滚动到视图才能单击它。
- 单击它后,您需要等待页面加载才能再次获取该元素,再次滚动到它并再次单击它。
如下:
from selenium.webdriver.common.action_chains import ActionChains
driver.get("link")
driver.implicitly_wait(12)
wait = WebDriverWait(driver, 12)
actions = ActionChains(driver)
wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR, "button#onetrust-accept-btn-handler"))).click()
while(driver.find_elements_by_css_selector('a.event__more.event__more--static')):
show_more = driver.find_element_by_css_selector('a.event__more.event__more--static')
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
actions.move_to_element(show_more).perform()
time.sleep(0.5)
show_more = driver.find_element_by_css_selector('a.event__more.event__more--static')
show_more.click()
time.sleep(3)