Получение элементов с пользовательскими атрибутами HTML - PullRequest
0 голосов
/ 21 марта 2019

У меня есть следующий веб-сайт: https://www.kvk.nl/handelsregister/publicaties/,, где я хотел бы получить ссылку для входа в систему с помощью Selenium, Scrapy и Python. Так что для соответствующей функции у меня есть следующий код:

def start_requests(self):
        self.driver = webdriver.Chrome(executable_path=os.path.join(os.getcwd(), "Drivers", "chromedriver.exe"))
        self.driver.get(self.initial_url)
        test = access_page_wait.until(expected_conditions.visibility_of_element_located((By.CSS_SELECTOR, 'a[data-ui-test-class="linkCard_toegangscode"]')))
    if test.is_displayed():
        print("+1")
    else:
        print("-1")

Однако, похоже, это не работает, так как просто ждет 15 секунд, а затем останавливается. Оно никогда не достигнет +1 или -1.

Теперь мой вопрос: как мы можем указать селен на правильный элемент? Кажется, он также не работает с XPATH find_elements_by_xpath("//a[@data-ui-test-class='linkCard_toegangscode']").

Должен ли я использовать другой подход выбора, и если да, то какой?

1 Ответ

1 голос
/ 21 марта 2019

Потому что есть Frame, который останавливает вам доступ к элементу. Переключите iframe и затем получите доступ к элементу.

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
import os
driver = webdriver.Chrome(executable_path=os.path.join(os.getcwd(), "Drivers", "chromedriver.exe"))
driver.get("https://www.kvk.nl/handelsregister/publicaties/")
driver.switch_to.frame(0)
test=WebDriverWait(driver,10).until(expected_conditions.visibility_of_element_located((By.CSS_SELECTOR, 'a[data-ui-test-class="linkCard_toegangscode"]')))
if test.is_displayed():
    print("+1")
else:
    print("-1")

Попробуйте приведенный выше код. Он должен напечатать то, что вы ищете.

...