我正努力在提交按钮中点击一下,该按钮已被禁用但不应该。我有一个输入框,可以像这样监听onKeyPress:
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>
当我在页面中并从键盘输入时,它可以正常工作。但我不知道为什么在selenium不和dunno如何更好地调试它。 Selenium代码:
elem = self.browser.find_element_by_css_selector('input_css')
elem.clear()
elem.send_keys('string_to_write')
为了您的信息,elem是正确的,我检查了它。
当我在输入框中写入正确的字符串后尝试单击按钮时,该按钮被禁用。
我试图为自己执行javascript:
self.browser.execute_script("arguments[0].removeAttribute('disabled')", selector)
其中selector是按钮。但似乎它不起作用,它也没有抛出错误。
答案 0 :(得分:0)
在您的代码中,您似乎尝试通过强制从DOM中删除“禁用”属性来启用提交按钮。一种解决方案是使用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);
祝你好运!
PS。如果上述方法不起作用,那么在send_keys之后,按钮没有尽快启用。尝试引入1秒延迟来破坏或确认神话! ;)
PS2另一种方法可能是搜索disabled属性,如果找不到该元素(即FALSE - &gt;意味着该按钮已启用,则只能使用前面指向'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)
}
希望这有帮助! :)