在 Python 中使用 Selenium 时如何处理名称中的冒号 (:)
How to handle colon (:) in the name when using Selenium in Python
我正在尝试在网页 (https://muisca.dian.gov.co/WebRutMuisca/DefConsultaEstadoRUT.faces) 中搜索号码。
我知道输入元素的名称是:"vistaConsultaEstadoRUT:formConsultaEstadoRUT:numNit",但是当我尝试查找该元素时出现此错误:
"NoSuchElementException: no such element: Unable to locate element: {"method":"css selector","selector":"[name="vistaConsultaEstadoRUT:formConsultaEstadoRUT:numNit"]"}
(Session info: chrome=81.0.4044.138)"
这是我试过的:
from selenium import webdriver
driver = webdriver.Chrome("C:\Users\jcherrerab\Anaconda3\Lib\site-packages\selenium\webdriver\chrome\chromedriver.exe")
driver.get("https://muisca.dian.gov.co/WebRutMuisca/DefConsultaEstadoRUT.faces")
driver.find_element_by_name("vistaConsultaEstadoRUT:formConsultaEstadoRUT:numNit").send_keys("860003020")
你能帮帮我吗?
<input>
元素的 name 属性包含 :
字符,如:
vistaConsultaEstadoRUT:formConsultaEstadoRUT:numNit
和:
在css-selectors. Hence your program fails to find the desired element and raises
中使用时具有特殊效果
解决方案
要查找元素,您可以使用以下任一方法 :
使用css_selector
:
driver.find_element_by_css_selector("input[name='vistaConsultaEstadoRUT:formConsultaEstadoRUT:numNit']")
使用xpath
:
driver.find_element_by_xpath("//input[@name='vistaConsultaEstadoRUT:formConsultaEstadoRUT:numNit']")
最佳实践
当您调用 send_keys()
时,理想情况下您需要为 element_to_be_clickable()
引入 并且您可以使用以下任一方法 :
使用CSS_SELECTOR
:
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "input[name='vistaConsultaEstadoRUT:formConsultaEstadoRUT:numNit']"))).send_keys("860003020")
使用XPATH
:
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//input[@name='vistaConsultaEstadoRUT:formConsultaEstadoRUT:numNit']"))).send_keys("860003020")
注意:您必须添加以下导入:
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
浏览器快照:
参考
您可以在以下位置找到一些相关讨论:
我正在尝试在网页 (https://muisca.dian.gov.co/WebRutMuisca/DefConsultaEstadoRUT.faces) 中搜索号码。
我知道输入元素的名称是:"vistaConsultaEstadoRUT:formConsultaEstadoRUT:numNit",但是当我尝试查找该元素时出现此错误:
"NoSuchElementException: no such element: Unable to locate element: {"method":"css selector","selector":"[name="vistaConsultaEstadoRUT:formConsultaEstadoRUT:numNit"]"}
(Session info: chrome=81.0.4044.138)"
这是我试过的:
from selenium import webdriver
driver = webdriver.Chrome("C:\Users\jcherrerab\Anaconda3\Lib\site-packages\selenium\webdriver\chrome\chromedriver.exe")
driver.get("https://muisca.dian.gov.co/WebRutMuisca/DefConsultaEstadoRUT.faces")
driver.find_element_by_name("vistaConsultaEstadoRUT:formConsultaEstadoRUT:numNit").send_keys("860003020")
你能帮帮我吗?
<input>
元素的 name 属性包含 :
字符,如:
vistaConsultaEstadoRUT:formConsultaEstadoRUT:numNit
和:
在css-selectors. Hence your program fails to find the desired element and raises
解决方案
要查找元素,您可以使用以下任一方法
使用
css_selector
:driver.find_element_by_css_selector("input[name='vistaConsultaEstadoRUT:formConsultaEstadoRUT:numNit']")
使用
xpath
:driver.find_element_by_xpath("//input[@name='vistaConsultaEstadoRUT:formConsultaEstadoRUT:numNit']")
最佳实践
当您调用 send_keys()
时,理想情况下您需要为 element_to_be_clickable()
引入
使用
CSS_SELECTOR
:WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "input[name='vistaConsultaEstadoRUT:formConsultaEstadoRUT:numNit']"))).send_keys("860003020")
使用
XPATH
:WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//input[@name='vistaConsultaEstadoRUT:formConsultaEstadoRUT:numNit']"))).send_keys("860003020")
注意:您必须添加以下导入:
from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.common.by import By from selenium.webdriver.support import expected_conditions as EC
浏览器快照:
参考
您可以在以下位置找到一些相关讨论: