元素在Selenium中的点(X,Y)不可点击

问题描述:

我正在使用java编写一个selenium脚本。元素在Selenium中的点(X,Y)不可点击

在我的方案中,我有一个选择按钮和一个确定按钮。当我第一次加载页面时,选择按钮被启用并且OK按钮被禁用。

当我点击选择按钮时,会弹出一个窗口。然后我在弹出窗口中从日期选择器中选择一个日期。选择日期后,我在弹出窗口中单击确认按钮。点击确认按钮后,弹出窗口关闭,确定按钮启用。

这是我的测试场景。但是,当我运行这个时,我的测试在点击确定按钮时失败。

我做了大量的研究,想出了添加滚动到我的代码。再次我的测试在另一个点上失败(无法从日期选择器中选择日期,但无法想象这是如何发生的。)

这是我的代码。

// Click Select button 
driver.findElement(By.xpath("//tr[@id='0']/td[2]/a")).click(); 
System.out.println("User Clicked Select button"); 

// Select Days 
driver.findElement(By.xpath("//div[@id='myModal0']/div/div/div[2]/div/div[2]/div/div/input")).click(); 
driver.findElement(By.xpath("//div[@id='ui-datepicker-div']/table/tbody/tr[5]/td[7]/a")).click(); 
System.out.println("User Selected the days the service is offered"); 

// Click Confirm Button 
driver.findElement(By.xpath("//div[@id='myModal0']/div/div/div[2]/div/div[6]/button")).click(); 
System.out.println("User clicked Confirm Button"); 

// Page Scroll 
JavascriptExecutor jse = (JavascriptExecutor)driver; 
jse.executeScript("window.scrollBy(0,250)", ""); 

// Click OK Button 
driver.findElement(By.xpath("/html/body/div[1]/div[4]/div/div[2]/table/tbody/tr[1]/td[6]/button")).click(); 
System.out.println("User Clicked OK Button"); 

这是我收到的错误信息。

线程“main”中的异常org.openqa.selenium.WebDriverException:元素在点(1460.7666015625,159.03334045410156)处不可点击。其他元素将收到点击: 命令持续时间或超时:89毫秒 构建信息:版本:'2.53.0',修订:'35ae25b',时间:'2016-03-15 17:00:58' 系统信息:host:'ET_LAHIRU',ip:'192.168.1.4',os.name:'Windows 8.1',os.arch:'amd64',os.version:'6.3',java.version:'1.8.0_25' 驱动程序信息:org.openqa.selenium.firefox.FirefoxDriver 功能[{applicationCacheEnabled = true,rotate = false,handlesAlerts = true,databaseEnabled = true,version = 45.0.1,platform = WINDOWS,nativeEvents = false,acceptSslCerts = true, webStorageEnabled = true,locationContextEnabled = true,browserName = firefox,takesScreenshot = true,javascriptEnabled = true,cssSelectorsEnabled = true}] 会话ID:fea6e350-638c-4cb6-8136-79010aec01a4 at sun.reflect.NativeConstructorAccessorImpl .newInstance0(本机方法) 在sun.reflect.NativeConstructorAccessorImpl.newInstance(来源不明) 在sun.reflect.DelegatingConstructorAccessorImpl.newInstance(来源不明) 在java.lang.reflect.Constructor.newInstance(来源不明) 在组织.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler.java:206) at org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:158) at org.openqa.selenium.remote.RemoteWebDriver.execute在selrcdemo(RemoteWebDriver.java:678) 在org.openqa.selenium.remote.RemoteWebElement.execute(RemoteWebElement.java:327) 在org.openqa.selenium.remote.RemoteWebElement.click(RemoteWebElement.java:85) .Activities.activities(Activities.java:7 3) 在selrcdemo.ayubomain.main(ayubomain.java:69)

有人能告诉我一个解决方案?

在此先感谢。 :)

+0

您正在测试哪个网站?它是公开的吗? – Akbar

+2

这些'XPaths'是一些令人讨厌的东西:)你不应该使用绝对的'XPath'!这不会解决你目前的问题,但会保护你免受未来的问题:) – Andersson

+0

@Akbar,对不起,它不公开 –

找出我自己的答案。

在确定按钮之前添加了Thread.sleep(5000);

现在我的代码按预期工作。:)