硒的故障定位元素并确定ID

时间:2019-07-17 01:37:10

标签: python html selenium css-selectors

收到错误:“ selenium.common.exceptions.NoSuchElementException:消息:无法找到元素:”

browser.find_element(By.XPATH, "//input[@id='email']")
browser.find_element_by_id("email")
browser.find_element_by_id("input")
browser.find_element_by_class("inputtext")
browser.find_element_by_class_name("_55r1")
browser.find_element_by_class_name("login")
browser.find_element_by_class_name("login_page")
browser.find_element_by_class_name('login_form_label')
browser.find_element_by_class_name('label.login_form_label')
browser.find_element(By.XPATH, "//label[text()='Email or Phone']")
browser.find_element_by_id("email_container")

甚至添加了浏览器     .implicity_wait(10)

所有产生相同的错误。

有什么想法吗?

Source code

1 个答案:

答案 0 :(得分:0)

  1. 请确保您要查找的元素不属于iframe,否则必须使用switch_to_frame函数才能在定位之前将上下文更改为相关的iframe元素
  2. 请确保您要查找的元素没有隐藏在Shadow DOM中,否则,您将不得不找到相关的ShadowRoot并将其转换为WebElement使用WebElement.find_element_by函数来定位元素(而不是browser.find_element_by)
  3. 在任何情况下,我都建议使用Explicit Wait,因为在DOM中元素可能无法立即使用的情况(例如,正在通过AJAX调用来加载该元素)

    email = WebDriverWait(browser, 10).until(EC.element_to_be_clickable((By.ID, "email")))