Как перейти на следующую страницу сообщений форума с помощью Selenium - PullRequest
0 голосов
/ 23 сентября 2019

Кто-нибудь может мне помочь?

Я пытаюсь собрать сообщения на китайском дискуссионном форуме.Я написал код, чтобы открыть сообщения на форуме и получить текст каждого сообщения.Это хорошо работает для страницы 1.

Затем я хочу перейти на следующую страницу: для «кнопки» для этого есть class = «next z-enable», поэтому я думаю, что мне нужно использовать xpath, чтобы найти его, но потом, когда я делаю Selenium, кажется, нет, иди, чтобы перейти на следующую страницу этого.Является ли кнопка Java-скриптом или что-то в этом роде?

driver = webdriver.Chrome()

driver.get('http://comment.tie.163.com/EIU9CP4R0001875O.html')
posts = driver.find_elements_by_class_name("rgt-col")
for idx, x in enumerate(posts):
    content = str(x.text)
    print(content)
    with open(''+str(idx)+'post.txt', 'w') as g:
        g.write(content)

time.sleep(20)

driver.find_element_by_xpath("//*[@id='tie-main']/div[2]/div[2]/div[2]/div/ul/li[6]/span")
element.click()

Любая помощь с этим была бы очень признательна!Я новичок в Python / Selenium, но стараюсь учиться как можно быстрее.Спасибо ...

Ответы [ 2 ]

0 голосов
/ 23 сентября 2019
  1. Я бы рекомендовал использовать Явное ожидание вместо time.sleep , так как это ускорит ваш тест, поэтому Selenium сможет перейти на следующую страницу, как толькокнопка будет активна
  2. Рассмотрите возможность использования относительного XPath и старайтесь избегать этих div[2]/div[2]/div[2], поскольку ваш текущий подход хрупок и чувствителен к любым изменениям разметки.Например, вы можете использовать XPath содержит () функция

Предлагаемый код:

element = WebDriverWait(driver, 10).until(
    expected_conditions.presence_of_element_located((By.XPATH, "//span[contains(@class,'z-enable'")))
element.click()
0 голосов
/ 23 сентября 2019

Нажать на Next.Вызвать WebDriverWait и element_to_be_clickable() и следующий xapth.

WebDriverWait(driver,20).until(EC.element_to_be_clickable((By.XPATH,"//div[@class='tie-head']//ul[@class='m-page']//li//span[@class='next z-enable']"))).click()

Вам необходимо добавить следующие операции импорта для выполнения кода выше.

from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...