2016-08-03 42 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 :)

相關問題