我有以下网站: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']")
似乎也不起作用。
我应该使用另一种选择方法吗?如果可以,那是哪种方法?
答案 0 :(得分:1)
因为有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")
尝试上面的代码。它应该打印出您要看的内容。