Как я могу щелкнуть javascript объект с помощью Selenium? - PullRequest
0 голосов
/ 27 февраля 2020
# -*- coding: utf-8-sig -*-
import os
import sys
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

MAIN_PAGE_URL = "https://ithub.korean.go.kr/user/total/database/corpusManager.do"
abspath = os.path.dirname(os.path.abspath(__file__))
driver = None

def load_browser():
    global driver

    options = webdriver.ChromeOptions()
    options.add_argument("user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.97 Safari/537.36")

    try:
        driver = webdriver.Chrome(abspath + r"\chromedriver.exe", options = options)
    except Exception as e:
        print(e)
        sys.exit()

def scrape_a_page():
    wait = WebDriverWait(driver, 15)
    wait.until(EC.element_to_be_clickable((By.XPATH, "//table[@class='tbl_list']//td[@class='lf']/a")))

    content = driver.find_element_by_xpath("//table[@class='tbl_list']//td[@class='lf']/a").get_attribute("href")
    driver.execute_script(content)

# RUN
load_browser()
driver.get(MAIN_PAGE_URL)
scrape_a_page()

Я щелкнул текст (объект в таблице), чтобы перейти к содержимому таблицы, но отображается страница с ошибкой.

Работала ли автоматизированная система блокировки хоста? Или я сделал ошибку?

Спасибо за помощь.

1 Ответ

0 голосов
/ 27 февраля 2020

Вам не нужно выполнять javascript независимо, он настроен на запуск одним щелчком мыши. Вы можете использовать:

def scrape_a_page():
    wait = WebDriverWait(driver, 15)
    wait.until(EC.element_to_be_clickable((By.XPATH, "//table[@class='tbl_list']//td[@class='lf']/a")))

    link = driver.find_element_by_xpath("//table[@class='tbl_list']//td[@class='lf']/a")
    link.click()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...