Selenium NoSuchElement特定网站异常

时间:2018-06-29 19:49:38

标签: python-3.x selenium selenium-chromedriver

我最近正在尝试学习Selenium,但是发现了一个网站,该网站只是忽略了我通过ID,名称或xpath查找特定元素的尝试。该网站在这里:

https://www.creditview.pl/PL/Creditview.htm

我试图选择第一个文本窗口,标记为Uzytkownik的文本窗口,其代码如下:

我正在尝试使用几种方法找到它:

from selenium import webdriver
browser = webdriver.Chrome()

site = "https://www.creditview.pl/pl/creditview.htm"
browser.get(site)

login_txt = browser.find_element_by_xpath(r"/html//input[@id='ud_username']")
login_txt2 = browser.find_element_by_id("ud_username")
login_txt3 = browser.find_element_by_name("ud_username")

无论我尝试什么,我都会不断得到: selenium.common.exceptions.NoSuchElementException:消息:没有这样的元素:无法找到元素:

好像根本没有该元素。

我怀疑包含该字段的小框架可能是iframe,并尝试切换到各种元素而没有运气。还尝试检查该元素是否未以某种方式被我的代码遮盖(隐藏元素)。似乎没有任何效果,或者我犯了一些新手错误,答案就在我眼前。最终,我能够在站点上选择其他元素,并使用几个TAB键将光标移动到所需位置,但感觉像是在作弊。

有人可以指出要如何找到该元素吗?因为这个问题,我真的无法入睡:)

1 个答案:

答案 0 :(得分:1)

鉴于您的元素在那里,您仍然需要wait for your element才能被加载/可见/可点击等。您可以使用硒的expected conditions (EC)来做到这一点。

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

my_XPATH = r"/html//input[@id='ud_username']"
wait_time = 10  # Define maximum time to wait in seconds

driver = webdriver.Chrome()
site = "https://www.creditview.pl/pl/creditview.htm"
driver.get(site)

try:
    my_element = driver.WebDriverWait(driver, wait_time).until(EC.presence_of_element_located(By.XPATH,my_XPATH))
except:
    print ("element not found after %d seconds" % (wait_time))