NoSuchElementException:没有此类元素:无法找到元素:css选择器,但即时消息使用find_element

时间:2019-12-12 08:38:35

标签: python selenium-webdriver selenium-chromedriver selenium-ide

我使用了硒IDE来跟踪我的UI活动。我从IDE中获得了以下代码,并且也在UI中进行了检查,但是在通过id使用find_element时,出现CSS选择器错误。

driver.find_element(By.ID, "button-1034-btnIconEl").click()

错误是

  

引发exception_class(消息,屏幕,堆栈跟踪)   NoSuchElementException:否这样的元素:无法找到元素:   {“ method”:“ css选择器”,“ selector”:“ [id =” button-1034-btnIconEl“]”}
  (会话信息:chrome = 78.0.3904.108)

enter image description here

请帮助我进行调试。.

2 个答案:

答案 0 :(得分:0)

该ID似乎是动态ID,因此您不能在选择器中使用静态ID。您需要为此使用动态xpath。
您可以使用以下xpath:

driver.find_element(By.XPATH, "//span[contains(@id,'btnIconEl')]").click()

OR

您还可以在xpath中使用其文本查找该元素:

driver.find_element(By.XPATH, "//span[contains(text(),'Add Order')]").click()

答案 1 :(得分:0)

在文本为添加订单按钮上进入click(),您必须为element_to_be_clickable()引入 WebDriverWait 您可以使用以下任一Locator Strategies

  • 使用CSS_SELECTOR

    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "a[id^='button-'] > span.x-btn-wrap > span.x-btn-button > span.x-btn-inner.x-btn-inner-center"))).click()
    
  • 使用XPATH

    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//a[starts-with(@id, 'button-')]/span[@class='x-btn-wrap']/span[@class='x-btn-button']/span[@class='x-btn-inner x-btn-inner-center' and contains(., 'Add')]"))).click()
    
  • 注意:您必须添加以下导入:

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

参考

您可以在Selenium “selenium.common.exceptions.NoSuchElementException” when using Chrome

中找到有关 NoSuchElementException: no such element 的详细讨论