各位Python和selenium专家。有个问题百思不得其解。请教,多谢!请详细告诉我错的原因。
请实际测试好了,把代码贴出来,谢谢,不要发理论,那个我看的很多了!不要说什么可能的原因,请测试好再说!网站https://www.finnciti.com/
我的初衷!能否不使用JavaScript代码,仅仅只使用python和selenium而解决呢,如果能解决,众谢!
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
driver = webdriver.Chrome()
driver.implicitly_wait(10) #隐式等待
driver.get('https://www.finnciti.com/') #请实际测试好了,把代码贴出来,谢谢,不要发理论,那个我看的很多了
search = driver.find_element(By.XPATH,"//*[@id='col_right']/form[1]/div[2]/input[2]") # 定位输入框。
search.send_keys('5687854')

试了多种方法最终结果一直报错如下。相同的代码但在其他找的测试网站上都是正常,唯独这个网站上面报错。
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.ElementNotInteractableException: Message: element not interactable
(Session info: chrome=92.0.4515.107)
Stacktrace:
Backtrace:
Ordinal0 [0x00562A33+2501171]
Ordinal0 [0x004FD1C1+2085313]
Ordinal0 [0x00401E70+1056368]
………………………………
………………………………
你这个问题在于两个文本框的切换,真正的输入框是第1个
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
option = webdriver.ChromeOptions()
option.add_experimental_option("detach", True)
driver = webdriver.Chrome(options=option)
driver.get('https://www.finnciti.com/')
d1 = driver.find_element(By.XPATH,"//*[@id='col_right']/form[1]/div[2]/input[2]")
d1.click()
d = driver.find_element(By.XPATH,"//*[@id='col_right']/form[1]/div[2]/input[1]")
d.send_keys("8999999")
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
driver = webdriver.Chrome()
driver.get('https://www.finnciti.com/')
# 使用显式等待,等待输入框可见和可用
wait = WebDriverWait(driver, 10)
search = wait.until(EC.element_to_be_clickable((By.XPATH,"//*[@id='col_right']/form[1]/div[2]/input[2]")))
# 使用JavaScript来输入元素
driver.execute_script("arguments[0].value = '5687854';", search)
回答部分参考、引用ChatGpt以便为您提供更准确的答案:
针对您在2012系统上无法打开端口80和443的问题,以下是一些可能的解决方案和建议:
netstat -ano | findstr :80
netstat -ano | findstr :443
如果命令没有返回结果,则表示端口80和443没有被占用。如果有进程占用了这些端口,您可以尝试终止相关的进程或更改相应的端口。请注意,具体的解决方法可能因系统配置和网络环境而有所不同。如果以上方法仍无法解决问题,建议您向网络管理员、系统管理员或专业技术支持人员寻求进一步帮助,以便针对您的具体情况提供准确的支持。