Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 无法使用发送键在文本字段中完全输入值。仅输入部分值,未显示错误_Python_Selenium_Sendkeys - Fatal编程技术网

Python 无法使用发送键在文本字段中完全输入值。仅输入部分值,未显示错误

Python 无法使用发送键在文本字段中完全输入值。仅输入部分值,未显示错误,python,selenium,sendkeys,Python,Selenium,Sendkeys,无法使用发送键在文本框字段中完全输入值。仅输入部分值,未显示错误 尝试在等待的情况下发送密钥。 尝试缓慢发送密钥 [编辑]-这是下面评论中要求的整个脚本 from selenium.webdriver.support.ui import Select from selenium.webdriver.support.wait import WebDriverWait from selenium import webdriver from selenium.webdriver.common.by i

无法使用发送键在文本框字段中完全输入值。仅输入部分值,未显示错误

尝试在等待的情况下发送密钥。 尝试缓慢发送密钥

[编辑]-这是下面评论中要求的整个脚本

from selenium.webdriver.support.ui import Select
from selenium.webdriver.support.wait import WebDriverWait
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as ec
import time
from time import sleep
from selenium.webdriver.common.keys import 

Keysdriver=webdriver.Chrome(executable_path="C:\Program Files (x86)\Drivers\chromedriver.exe")

driver.get("https://www.volunteers.ae/register.aspx")


driver.find_element_by_xpath("//*[@id='topnav_btnLangShift']").click()

driver.find_element(By.ID,'body_txtFName').send_keys("RADHIKA")

driver.find_element(By.ID,'body_txtLName').send_keys("PORANKI")

driver.find_element_by_id("body_txtEmail").send_keys("radhika.po@gmail.com")
element=driver.find_element_by_id("body_ddGender")
dropdown=Select(element)dropdown.select_by_value("Female")
driver.find_element_by_id("ctl00_body_txtDOB_dateInput").send_keys("08/04/1986")
element=driver.find_element_by_id("body_ddNationality")
dropdown=Select(element)
dropdown.select_by_value("India")
element=driver.find_element_by_id("body_ddCountryOfResidence")
dropdown=Select(element)
dropdown.select_by_value("+971")
element=driver.find_element_by_id("body_ddEmirate")
dropdown=Select(element)
dropdown.select_by_value("DUBAI")
time.sleep(10)

element=driver.find_element_by_id("body_ddCity")

dropdown=Select(element)

dropdown.select_by_value("DUBAI CITY")

def ClickAndSlowType(element, text):
    element.click()
    sleep(1) # let scripts run
    for t in list(text):
        print(t)
        element.send_keys(t)
        sleep (0.1)

mobile = WebDriverWait(driver, 8).until(ec.element_to_be_clickable((By.XPATH, "//*[@id='ctl00_body_txtEtisalat']")))
mobile.click()
mobile.send_keys("68862632")


运行脚本时出现了什么问题

我使用等待操作增强了您的脚本,效果非常好:

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

driver = webdriver.Chrome()
driver.get('https://www.volunteers.ae/register.aspx')

mobile = WebDriverWait(driver, 8).until(EC.element_to_be_clickable((By.XPATH, "//*[@id='ctl00_body_txtEtisalat']")))
mobile.click()
mobile.send_keys("68862632")
输出如下所示:

页面中似乎确实有一些脚本在起作用。每次单击并键入时,它都会重新显示该字段。然而,上面的代码似乎仍然有效

如果有问题,请告诉我发生了什么(以及发生的任何相关错误),我会再次查看


[更新!]

根据下面的注释,尝试延迟键入。 添加此导入:

from time import sleep
添加此功能:

def ClickAndSlowType(element, text):
    element.click()
    sleep(1) # let scripts run
    for t in list(text):
        print(t)
        element.send_keys(t)
        sleep (0.1)
运行以下命令:

mobile = WebDriverWait(driver, 8).until(EC.element_to_be_clickable((By.XPATH, "//*[@id='ctl00_body_txtEtisalat']")))
ClickAndSlowType(mobile, "68862632")
我无法重现您的问题,但这对我来说也很有效,值得一试。它只是在页面脚本出现问题的情况下键入的速度稍微慢一点

让我知道进展如何

如果你能用你的整个i代码更新你的问题,我也许能够重新创建并提供一个经过测试的答案。(没有人喜欢“它为我工作”)


因为它在本地工作,但不在@Paul的机器上:我们需要调试它。在脚本末尾尝试此操作,并请准确说明您看到的字段变化以及控制台上打印的输出:


def WaitForDocumentReadyState():
打印(“之前的就绪状态:“+driver.execute\u脚本('return document.readyState'))
WebDriverWait(driver,10).until(lambda driver:driver.execute_脚本('return document.readyState')=='complete')
def ClickAndSlowType(元素,文本):
元素。单击()
WaitForDocumentReadyState()
睡眠(1)#让脚本运行
对于列表中的t(文本):
元素。发送_键(t)
WaitForDocumentReadyState()
睡眠(0.5)
睡眠(1)#让脚本运行
WaitForDocumentReadyState()
mobile=WebDriverWait(driver,8).until(ec.element可点击((By.XPATH,“/*[@id='ctl00_body']))
#mobile.click()##已删除
#移动。发送密钥(“68862632”)###已删除
使用该功能单击并缓慢键入(手机,“68862632”)###

运行脚本时出现了什么问题

我使用等待操作增强了您的脚本,效果非常好:

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

driver = webdriver.Chrome()
driver.get('https://www.volunteers.ae/register.aspx')

mobile = WebDriverWait(driver, 8).until(EC.element_to_be_clickable((By.XPATH, "//*[@id='ctl00_body_txtEtisalat']")))
mobile.click()
mobile.send_keys("68862632")
输出如下所示:

页面中似乎确实有一些脚本在起作用。每次单击并键入时,它都会重新显示该字段。然而,上面的代码似乎仍然有效

如果有问题,请告诉我发生了什么(以及发生的任何相关错误),我会再次查看


[更新!]

根据下面的注释,尝试延迟键入。 添加此导入:

from time import sleep
添加此功能:

def ClickAndSlowType(element, text):
    element.click()
    sleep(1) # let scripts run
    for t in list(text):
        print(t)
        element.send_keys(t)
        sleep (0.1)
运行以下命令:

mobile = WebDriverWait(driver, 8).until(EC.element_to_be_clickable((By.XPATH, "//*[@id='ctl00_body_txtEtisalat']")))
ClickAndSlowType(mobile, "68862632")
我无法重现您的问题,但这对我来说也很有效,值得一试。它只是在页面脚本出现问题的情况下键入的速度稍微慢一点

让我知道进展如何

如果你能用你的整个i代码更新你的问题,我也许能够重新创建并提供一个经过测试的答案。(没有人喜欢“它为我工作”)


因为它在本地工作,但不在@Paul的机器上:我们需要调试它。在脚本末尾尝试此操作,并请准确说明您看到的字段变化以及控制台上打印的输出:


def WaitForDocumentReadyState():
打印(“之前的就绪状态:“+driver.execute\u脚本('return document.readyState'))
WebDriverWait(driver,10).until(lambda driver:driver.execute_脚本('return document.readyState')=='complete')
def ClickAndSlowType(元素,文本):
元素。单击()
WaitForDocumentReadyState()
睡眠(1)#让脚本运行
对于列表中的t(文本):
元素。发送_键(t)
WaitForDocumentReadyState()
睡眠(0.5)
睡眠(1)#让脚本运行
WaitForDocumentReadyState()
mobile=WebDriverWait(driver,8).until(ec.element可点击((By.XPATH,“/*[@id='ctl00_body']))
#mobile.click()##已删除
#移动。发送密钥(“68862632”)###已删除
使用该功能单击并缓慢键入(手机,“68862632”)###

除非您将HTML或链接发布到您正在尝试使用的页面,否则我们无法帮助您。亲爱的,我正在使用下面的链接“”感谢提供更多详细信息-您在哪台机器上运行此功能?-按原样管理你所有的一切对我很有用。然后我得到完整的电话号码。我会看一看脑海中还浮现出什么,但一个明显的区别是我们的机器……我使用的笔记本电脑是Windows7OS@Paul,我尝试了不同的形式,但无法显示您的问题。我将在我的答案中发布更多的代码和更多的调试-当您尝试它时,您能准确地描述您在这个字段中看到的情况吗?(它是否键入,是否只执行一个字符,等等…-我看不到它,所以我需要你告诉我,以便我能感觉到下一步要尝试什么。我们无法帮助你,除非你发布HTML或链接到你正在尝试的页面。亲爱的,我正在使用下面的链接“”谢谢你提供的额外细节-你在哪台机器上运行这个?-按原样运行你所有的一切对我来说都很有用。然后我会得到完整的电话号码。我会看看脑海中还有什么想法,但一个明显的区别是我们的机器…我使用的笔记本电脑是windows 7OS@Paul,我尝试了不同的形式,但我不能得到你的issue将出现。我将在我的答案中发布更多的代码和更多的调试-当你尝试时,你能准确地描述你在这个字段中看到的情况吗?(它是否键入,是否只执行一个字符,等等…-我看不到它,所以我需要你告诉我,以便我能感觉到下一步要尝试什么我尝试了你的脚本,但它仍然输入了数字,直到“056-\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu