isEnable()无法在selenium webdriver中查找按钮是启用还是禁用?

时间:2017-01-12 11:46:25

标签: selenium-webdriver

我正在尝试波纹管代码,但总是返回真值。

                if(updatebuton_status=="true"){

                Thread.sleep(timmer*3);
                //click on the update button                
                //ieDriver.findElement(By.xpath("html/body/div[1]/div/div/div/div[3]/div/div[1]/div/div/table/tbody/tr/td/table/tbody/tr/td[3]/div/div/div[2]/div[3]/div/div/div/div[2]/div/div[2]/div[2]/div/div/div[3]/div[2]/div/div/div/div[3]/div/div/div/div/div/div[2]/div[1]/div/div/div/div/table[1]/tbody/tr/td/table/tbody/tr/td[3]/span/table/tbody/tr[2]/td[2]")).click();
                ieDriver.findElement(By.xpath("/html/body/div[1]/div/div/div/div[3]/div/div[1]/div/div/table/tbody/tr/td/table/tbody/tr/td[3]/div/div/div[2]/div[3]/div/div/div/div[2]/div/div[2]/div[2]/div/div/div[3]/div[2]/div/div/div/div[3]/div/div/div/div/div/div[2]/div[1]/div/div/div/div/table[1]/tbody/tr/td/table/tbody/tr/td[1]/span/table/tbody/tr[2]/td[2]")).click();      

                }else{
                Thread.sleep(timmer*3);
                //click on the Add button               
                ieDriver.findElement(By.xpath("/html/body/div[1]/div/div/div/div[3]/div/div[1]/div/div/table/tbody/tr/td/table/tbody/tr/td[3]/div/div/div[2]/div[3]/div/div/div/div[2]/div/div[2]/div[2]/div/div/div[3]/div[2]/div/div/div/div[3]/div/div/div/div/div/div[2]/div[1]/div/div/div/div/table[1]/tbody/tr/td/table/tbody/tr/td[1]/span/table/tbody/tr[2]/td[2]")).click();
                 }  

enter image description here

2 个答案:

答案 0 :(得分:0)

我觉得在某个地方你做错了,因为var vmBlock = function(label) { var self = this; self.text = label; self.color = ko.observable('grey'); } var vm = function() { var self = this; self.isSelecting = false; self.blocks = [new vmBlock('a'), new vmBlock('b'), new vmBlock('c')]; self.select = function(block) { block.color("red"); }; self.startTouch = function(data, event) { self.isSelecting = true; }; self.endTouch = function(data, event) { self.isSelecting = false; }; self.touch = function(data, event) { if (!self.isSelecting) return; var x = event.touches[0].clientX; var y = event.touches[0].clientY; var target = document.elementFromPoint(x, y); var vm = ko.dataFor(target); if (vm && vm.color) self.select(vm); } }; ko.applyBindings(new vm());太长,建议使用.block { display: inline-block; width: 100px; height: 100px; margin: 6px; }。如果您的元素有<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.2.0/knockout-min.js"></script> <div class="container" data-bind="foreach: blocks, event: { touchstart: startTouch, touchend: endTouch, touchmove: touch }"> <div class="block" onselectstart="return false" data-bind="text: text, style:{ 'background-color' : color }"> </div> </div>,则直接使用

我不知道你是如何检查该元素的显示方式 使用以下方法来做同样的事情 -

xpath

<强>被修改

如果您的按钮ID是动态的,请使用以下relative xpath来查找元素

id

boolean check= driver.findElement(By.id("tVLQur-btn")).isEnabled(); 

if(check)    // if `check` returns true then go in if condition
{
     driver.findElement(By.id("tVLQur-btn")).click();
}
else
{
     // DO SOME OTHER FUNCTIONALITY
}

它会找到您的更新按钮并检查天气是否启用

答案 1 :(得分:0)

我至少相信如果你将这一行分成两个语句,一个是定位元素,另一个是检查它的启用状态,至少你会知道问题(最有可能)在于元素location,因为它将返回一个nul到web元素,isEnabled将返回一个空指针异常。如果没有可用的一致ID,总会有使用相对较短的xpath的方法。检查浏览器中是否有包含单词xpath的加载项,您会看到有各种各样的xpath帮助程序。检查元素选项是最安全的,至少在理论上是这样,但它并不总是最好的。