如何使用Selenium和Python找到以下html的元素

时间:2019-04-10 05:43:12

标签: python selenium xpath css-selectors webdriverwait

我正在尝试为以下html标签找到xpath。但无法在selenium中找到。由于我是初学者,我需要一些帮助和建议。出现错误:

selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"xpath","selector":"//*[@class='react-autosuggest__input react-autosuggest__input--open']"}
(Session info: chrome=73.0.3683.103)

这是HTML元素。

<input type="text" autocomplete="off" aria-autocomplete="list" aria-controls="react-autowhatever-1" class="react-autosuggest__input react-autosuggest__input--open" placeholder="From" value="">

我已经尝试过为上面的HTML制作这个xpath,但是同样会引发错误。

//*[@class='react-autosuggest__input react-autosuggest__input--open']   

我希望上述xpath的输出能够将元素定位在硒中,但实际上我遇到了错误。

2 个答案:

答案 0 :(得分:0)

该元素似乎是一个React元素,因此要定位该元素,必须诱使 WebDriverWait 使元素可点击,并且您可以使用任一元素以下解决方案:

  • 使用CSS_SELECTOR

    element = WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "input.react-autosuggest__input.react-autosuggest__input--open[placeholder='From']")))
    
  • 使用XPATH

    element = WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//input[@class='react-autosuggest__input react-autosuggest__input--open' and @placeholder='From']")))
    
  • 注意:您必须添加以下导入:

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

答案 1 :(得分:0)

尝试使用WebDriverWait,仅设置更长的等待时间,例如:

element = WebDriverWait(driver, 60).until(expected_conditions.element_to_be_clickable((By.CSS_SELECTOR, "input[placeholder='From']")))