Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/314.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
Javascript 按键不工作_Javascript_Python_Selenium - Fatal编程技术网

Javascript 按键不工作

Javascript 按键不工作,javascript,python,selenium,Javascript,Python,Selenium,我正在努力使工作在提交按钮是禁用的,但它不应该点击。我有一个输入框,它有一个监听按键,如下所示: function isValidEmailAddress() { var pattern = "...." if(pattern.test($('#input').val())){ $('#submitButton').removeAttr('disabled'); }else{ $('#submitBu

我正在努力使工作在提交按钮是禁用的,但它不应该点击。我有一个输入框,它有一个监听按键,如下所示:

function isValidEmailAddress() {
        var pattern = "...."
        if(pattern.test($('#input').val())){
            $('#submitButton').removeAttr('disabled');
        }else{
            $('#submitButton').attr('disabled','disabled');
        }
我有一个我必须点击的按钮:

<button type="submit" id="submitButton" disabled="disabled">Login</button>
供你参考,元素是正确的,我检查过了

当我在输入框中写入正确的字符串后尝试单击按钮时,按钮被禁用

我试图为自己执行一个javascript:

self.browser.execute_script("arguments[0].removeAttribute('disabled')", selector)

其中选择器是按钮。但它似乎不起作用,也没有抛出错误。

在代码中,您似乎试图通过强制从DOM中删除“disabled”属性来启用submit按钮。一种解决方案是在元素选择中使用xpath更具体(即,仅在激活时选择它。您可以使用如下函数:

function getElementByXpath(path) {
  return document.evaluate(path, document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;
}

console.log( getElementByXpath("//button[@id='submitButton']") 

);
然后,您可以尝试单击刚刚定位的图元:

JavascriptExecutor executor = (JavascriptExecutor)driver;
executor.executeScript("arguments[0].click();", element);
祝你好运

注:如果上述操作不起作用,则是由于您的“发送”键后没有足够早地启用按钮。请尝试引入1秒延迟来取消或确认错误!)

PS2另一种方法是搜索禁用的属性,如果未找到元素(即FALSE-->表示按钮已启用,然后使用前面指向“id”的xpath单击它)。element=disabled的xpath为:

//按钮[@id='submitButton'和@disabled='disabled']

因此,您可以将其存储在一个var中,并从那里控制流:

 var buttonDisabled= driver.findElement(webdriver.By.xpath('//button[@id='submitButton' and @disabled='disabled']'));

 if(isFound=true)
            {
                //THINGS TO DO IF BUTTON WAS FOUND (DISABLED)
            }
            else
            {
                //THINGS TO DO IF BUTTON WAS -NOT- FOUND (ENABLED)
            }

希望这有帮助!:)

什么是参数[0]?你能粘贴代码吗?选择器self.browser.execute_脚本(“参数[0]。removeAttribute('disabled')”,选择器)我也尝试过:“document.getElementById('submitButton')。removeAttribute('disabled')”你如何定位参数?在元素上写入,是否激活submit按钮?您可能试图过早地找到它(即,尚未启用?)请尝试使用self.browser.execute_脚本(“参数[0].setAttribute('disabled','')、选择器)
 var buttonDisabled= driver.findElement(webdriver.By.xpath('//button[@id='submitButton' and @disabled='disabled']'));

 if(isFound=true)
            {
                //THINGS TO DO IF BUTTON WAS FOUND (DISABLED)
            }
            else
            {
                //THINGS TO DO IF BUTTON WAS -NOT- FOUND (ENABLED)
            }