首页 > 解决方案 > 使用 Selenium 搜索元素时指定了非法选择器或找不到 xpath 错误

问题描述

尝试构建一个小型机器人来帮助交易,但由于某种原因,代码在尝试搜索工具时会出现一系列略有不同的错误。

keyboard = Controller()
self.driver = webdriver.Chrome()
self.driver.get("https://app.libertex.com/")
self.driver.find_element(By.XPATH, "//input[@value=\'\']").click()
self.driver.find_element(By.CSS_SELECTOR, ".active > input:nth-child(2)").send_keys("gold")
self.driver.find_element(By.CSS_SELECTOR, "css=.active > .link-to-profile > .a-btn").click() #*tried doing CSS_Selector and the Xpaths ,xpath=//input  ,xpath=//header[@id='region-header']/div/div/div[3]/input  each giving different errors 
keyboard.press(Keys.ENTER) 
keyboard.release(Keys.ENTER)

每个都给出不同的错误,例如:

illegalselector was specified or could not find xpath

我只是感到困惑,因为 SeleniumIDE 版本运行良好,没有任何问题。

Iv 尝试同时使用 CSS 选择器方式、Xpath 方式和模仿按键。似乎没有任何效果。

同样在旁注整个代码直观地显示了该过程。与没有视觉效果的代码只是在后面运行相比,这种方式是否要求更高且速度更慢..如果是这样,请您推荐一个可以做到这一点的工具

在 cmd 中运行的 selenium 下载命令是

pip install selenium

标签: pythonseleniumselenium-webdriverxpathcss-selectors

解决方案


行内的所有定位器策略

self.driver.find_element(By.CSS_SELECTOR, "css=.active > .link-to-profile > .a-btn").click() #*tried doing CSS_Selector and the Xpaths ,xpath=//input  ,xpath=//header[@id='region-header']/div/div/div[3]/input  each giving different errors 

似乎有点不对劲。

  • 而不是By.CSS_SELECTOR, "css=.active > .link-to-profile > .a-btn"你需要使用:

    By.CSS_SELECTOR, ".active > .link-to-profile > .a-btn"
    
  • 而不是xpath=//input你需要使用:

    By.XPATH, "//input"
    
  • 而不是xpath=//header[@id='region-header']/div/div/div[3]/input你需要使用:

    By.XPATH, "//header[@id='region-header']/div/div/div[3]/input"
    

推荐阅读