【问题标题】:Cannot find the css selector, method or element error using Selenium and Python使用 Selenium 和 Python 找不到 css 选择器、方法或元素错误
【发布时间】:2023-04-04 12:36:01
【问题描述】:
<div class="dijitReset dijitInline dijitMenuItemLabel cpNavLeftLink dijitMenuItemSelected dijitMenuItem" data-dojo-attach-point="focusNode" role="menuitem" tabindex="-1" data-dojo-attach-event="onmouseenter:_onHover,onmouseleave:_onUnhover,ondijitclick:_onClick" aria-labelledby="dijit_PopupMenuBarItem_2_text" id="dijit_PopupMenuBarItem_2" aria-disabled="false" widgetid="dijit_PopupMenuBarItem_2" aria-haspopup="true" style="">*
    <span data-dojo-attach-point="containerNode" id="dijit_PopupMenuBarItem_2_text">Carload Tools</span>
</div>

我正在尝试使用 selenium 访问以下元素,但由于某种原因,它说他们无法识别此元素,请帮忙。我的代码在其他元素上运行良好,但对于这个它无法找到元素。

【问题讨论】:

标签: python-3.x selenium xpath css-selectors webdriverwait


【解决方案1】:

要识别元素,您可以使用以下任一Locator Strategies

  • 使用css_selector

    element = driver.find_element_by_css_selector("div#dijit_PopupMenuBarItem_2[widgetid='dijit_PopupMenuBarItem_2']>span#dijit_PopupMenuBarItem_2_text[data-dojo-attach-point='containerNode']")
    
  • 使用xpath

    element = driver.find_element_by_xpath("//div[@id='dijit_PopupMenuBarItem_2' and @widgetid='dijit_PopupMenuBarItem_2']/span[@id='dijit_PopupMenuBarItem_2_text' and @data-dojo-attach-point='containerNode']")
    

理想情况下,要定位您需要为visibility_of_element_located() 诱导WebDriverWait 的任何元素,您可以使用以下任一Locator Strategies

  • 使用CSS_SELECTOR

    element = WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.CSS_SELECTOR, "div#dijit_PopupMenuBarItem_2[widgetid='dijit_PopupMenuBarItem_2']>span#dijit_PopupMenuBarItem_2_text[data-dojo-attach-point='containerNode']")))
    
  • 使用XPATH:

    element = WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "//div[@id='dijit_PopupMenuBarItem_2' and @widgetid='dijit_PopupMenuBarItem_2']/span[@id='dijit_PopupMenuBarItem_2_text' and @data-dojo-attach-point='containerNode']")))
    
  • 注意:您必须添加以下导入:

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

参考文献

您可以在NoSuchElementException 中找到一些相关讨论:

【讨论】:

  • 我试过了,但它不起作用。谢谢你的帮助
猜你喜欢
  • 1970-01-01
  • 2021-11-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-28
  • 1970-01-01
  • 2018-03-28
相关资源
最近更新 更多