2016-08-03 41 views
3

点击我有以下异常:元件没有以点(x,y)的

org.openqa.selenium.WebDriverException: Element is not clickable at point (1057.38330078125, 673.13330078125). Other element would receive the click:

button id="ID4b6a687af6934e35b6f355f6305dc481" data-layout="hbox" class="hux-ui-button" type="button" role="button">

enter image description here

正如你所看到的,我试着点击按钮 “Speichern”。但奇怪的是,错误说他不能点击位置,但其他元素是我想要点击的按钮。

你知道我为什么以及如何解决这个问题吗?

的xpath = //span[text()='Speichern'

FF = 43.0

硒= 2.49。

+0

通过在控制台中执行'$ x(“// span [text()='Speichern']”)'来获得单个元素吗?你在网页上是否有固定的禁止/菜单? –

+0

那就是结果:Array []。带有这三个按钮的酒吧是相对的。 –

+0

你有一个固定的横幅像twitter https://twitter.com/search?q=twitter?尝试使用Chrome在发生异常时查看屏幕截图,以查看隐藏按钮的内容。 –

回答

0

那么,你告诉司机点击跨度,而不是按钮。尝试修改您的xpath以指向按钮。我认为这将工作:

//span[text()='Speichern']/.. 

它假设只有一个元素与该文本,并寻找父母,这是你的按钮。

+0

这是具有此名称的唯一元素。我也用xPath to Button和span来测试它 - 同样的结果。我也执行了一个等待,但它不会改变结果:( –

0

异常明确规定你要clickspanbutton元素将获得点击,所以你需要点击下面的button代替span: -

driver.findElement(By.cssSelector("button.hux-ui-button")).click(); 

driver.findElement(By.xpath(".//span[text()='Speichern']/parent::button")).click(); 

编辑: - 如果仍然面临同样的问题,请尝试使用JavascriptExecutor执行点击,如下所示: -

WebElement el = driver.findElement(By.xpath(".//span[text()='Speichern']/parent::button")); 
((JavascriptExecutor)driver).executeScript("arguments[0].click()", el); 
+0

不起作用 - 相同的结果:-( –

+0

@KevinJanke好吧,如果你仍然面临同样的问题尝试使用JavascriptExecutor执行点击,请参阅编辑的答案.. :) –

+0

嗯 - 没有工作要么 - 相同的结果: -/ –

0

Sooo ...我只问了一个Pro-Programmer;)。

我不得不更新我的singelton本:

public static Optional<JavascriptExecutor> getExecutor() { 
WebDriver checkdriver = Driver.getWebInstance(); 

final JavascriptExecutor executor; 

if (checkdriver instanceof JavascriptExecutor){ 

    executor = (JavascriptExecutor)checkdriver; 

} 
else 
{ 
    executor = null; 
} 
return Optional.ofNullable(executor); 
} 

,并在实际的页面对象添加了这个:

WebElement el = Driver.getInstance().findElement(By.xpath(".//span[text()='Speichern']/parent::button")); 

Driver.getExecutor().ifPresent((executor) -> executor.executeScript("arguments[0].click()", el)); 

现在它的工作原理。 Thx :)

相关问题