gpt4 book ai didi

python - Selenium - 难以在页面上找到输入元素(Python)

转载 作者:行者123 更新时间:2023-11-28 22:33:21 25 4
gpt4 key购买 nike

我在尝试自动化的网页上找不到搜索栏。我尝试了几种方法,但对 selenium 还很陌生,我不确定还有哪些更高级的定位选项。

分割:以下是高亮搜索栏元素(对应输入)的一段代码

The xpath to the following highlighted section is below :

//*[@id='core-content-container']/div/div[2]/div/div[1]/nav/div/div[2]/form/ul/li[1]/input

但是,当我尝试通过 find_element_by_xpath 查找此元素时,我得到了一个 NoSuchElementException(我尝试了较短的 xpath,但那些提供了相同的错误)

下面是我用来尝试找到这个元素的相关代码位:

from selenium import webdriver

driver = webdriver.Firefox()

#DNSMgr
driver.get('https://barista.cac.washington.edu/dnsmgr/#/fqdn')

driver.find_element_by_xpath("//div[@id='core-content-container']/div/div[2]/div/div[1]/nav/div/div[2]/form/ul/li[1]/input")

因为我试图获得的确切行看起来像这样:

<input type="text" class="form-control ng-pristine ng-untouched ng-valid" ng-model="query" placeholder="Full domain name">

然后我想也许我可以通过使用

driver.find_element_by_css_selector('input.form-control.ng-pristine.ng-untouched.ng-valid')

因为这类似于第 4.7 节中关于 seleniums python 教程的示例,我认为它可以完成这项工作,但它也不起作用(我得到另一个 NoSuchElementException)。

最佳答案

如果您将 NoSuchElementException 作为您提供的异常,可能有以下原因:-

  • 可能当你要查找元素时,它不会出现在 DOM 上,所以你应该实现 Explicit wait使用 WebDriverWait 等待元素出现,如下所示:-

    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 as EC

    element = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.CSS_SELECTOR, "div#core-content-container input.form-control[ng-model='query'][placeholder='Full domain name']")))
  • 可能是这个元素在任何 frameiframe 中。如果是,您需要在找到元素之前切换 frameiframe :-

     wait = WebDriverWait(driver, 10)

    #Find frame or iframe and switch
    wait.until(EC.frame_to_be_available_and_switch_to_it(("frame/iframe id or name")))

    #Now find the element
    element = wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, "div#core-content-container input.form-control[ng-model='query'][placeholder='Full domain name']")))

    #Once all your stuff done with this frame need to switch back to default
    driver.switch_to_default_content()

关于python - Selenium - 难以在页面上找到输入元素(Python),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40005293/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com