Selenium javascript onkeypress不工作

2024-09-29 21:38:19 发布

您现在位置:Python中文网/ 问答频道 /正文

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

function isValidEmailAddress() {
        var pattern = "...."
        if(pattern.test($('#input').val())){
            $('#submitButton').removeAttr('disabled');
        }else{
            $('#submitButton').attr('disabled','disabled');
        }

我有一个按钮,我必须点击:

^{pr2}$

当我在页面上用键盘打字时,它就起作用了。但我不知道为什么在selenium中不知道如何更好地调试它。硒代码:

elem = self.browser.find_element_by_css_selector('input_css')
elem.clear()
elem.send_keys('string_to_write')

为了你的信息,元素是正确的,我检查过了。在

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

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

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

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


Tags: selfbrowserinputifvarfunction按钮selector
1条回答
网友
1楼 · 发布于 2024-09-29 21:38:19

在您的代码中,您似乎试图通过从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']") 

);

然后,您可以尝试单击刚刚找到的元素:

^{pr2}$

祝你好运!在

如果以上不起作用,那是因为你的按钮在你的send_键后没有被激活。尝试引入1秒延迟来破解或者证实这个神话!;)

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

//button[@id='submitButton' and @disabled='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)
            }

希望这有帮助!:)

相关问题 更多 >

    热门问题