При нажатии кнопки в селене ничего не происходит - PullRequest
1 голос
/ 09 мая 2020
from selenium import webdriver
import time

driver = webdriver.Chrome()
driver.get('https://www.worldometers.info/coronavirus/country/canada/')
time.sleep(1)
button = driver.execute_script("window.scrollTo(0, 5500)") 
button1 = driver.find_element_by_xpath('/html/body/div[4]/div[2]/div[1]/div[8]/div/div[9]/a/button')
button1.click()

enter image description here

Пытаюсь нажать эту кнопку с помощью xpath, но, похоже, просто не нажимается кнопка для расширения веб-страницы. Сначала я попытался скопировать с помощью xpath, который не работал, а затем я скопировал полный xpath, который также не сработал. После этого я попытался найти по имени и ввести текст на кнопке и нажать кнопку. Но ни один из этих методов на самом деле не работал и не нажимал кнопку. Итак, как я могу нажать эту кнопку, чтобы она расширила веб-страницу, что позволило мне очистить больше веб-страницы?

Ответы [ 2 ]

0 голосов
/ 09 мая 2020

Чтобы щелкнуть View more News Вызвать WebdriverWait и дождаться presence_of_element_located() и следующего за селектором css.

from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By

driver = webdriver.Chrome()
driver.get('https://www.worldometers.info/coronavirus/country/canada/')
button=WebDriverWait(driver,20).until(EC.presence_of_element_located((By.CSS_SELECTOR,"a.load-more__btn>.btn")))
button.location_once_scrolled_into_view
button.click()

Или используйте следующий xpath

from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By

driver = webdriver.Chrome()
driver.get('https://www.worldometers.info/coronavirus/country/canada/')
button=WebDriverWait(driver,20).until(EC.presence_of_element_located((By.XPATH,"//a[@class='load-more__btn']/button[@class='btn']")))
button.location_once_scrolled_into_view
button.click()
0 голосов
/ 09 мая 2020

Проблема заключалась в том, что кнопка не находилась в «интерактивном состоянии», несмотря на то, что она отображалась на странице в данный момент. Чтобы избежать этого, вы должны добавить явное ожидание, чтобы сообщить драйверу, чтобы он дождался изменения его состояния на кликабельное.

Попробуйте вместо этого использовать этот код:

from selenium import webdriver
import time
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC    

driver = webdriver.Chrome()
driver.get('https://www.worldometers.info/coronavirus/country/canada/')
time.sleep(1)
button = driver.execute_script("window.scrollTo(0, 5500)")
button1 = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, '/html/body/div[4]/div[2]/div[1]/div[8]/div/div[9]/a/button')))
button1.click()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...