2017-05-23 42 views
0

我不能給訪問web應用程序,但這裏是按鈕硒不能點擊GWT樹項目

we = driver.findElement(By.xpath("//div/div/div[2]/div/div/div/div/div/div/div/div/div/div/div")); 
int width = we.getSize().getWidth(); 
action.moveToElement(we, width/2, 9).click().build().perform(); 

的代碼和HTML。

<div style="display: inline; background-color: rgb(255, 179, 0);" class="gwt-TreeItem gwt-TreeItem-selected" role="treeitem" id="gwt-uid-102" aria-level="9" aria-setsize="4" aria-posinset="1" aria-selected="true"> 
+0

對於那些來這篇文章提供答案,我切換到使用C#Web支持的驅動程序。我有些事不能回答我自己的問題,但如果這是將這個問題標記爲答案的最合適的方式,那麼我會。 –

回答

0

的Xpath = //標記名[@屬性=「值」]

上面是我們應該怎麼寫在代碼中的XPath你是隻給一個標籤的名字,但沒有屬性所以要儘量改變如何給XPath

Actions action=new Actions(driver); 
we = driver.findElement(By.xpath("//div/div/div[2]/div/div/div/div/div/div/div/div/div/div/div")); 
action.moveToElement(we).click().build().perform(); 
+0

該方法的問題是每次生成ID的方式都不相同。該對象正在正確找到。如果我有一個contextClick,則會顯示在適當的位置 –

+0

您也可以嘗試class屬性,而不是ID – teja

+0

正如我已經提到的,問題不在於查找元素。這是一個點擊它的問題。 –

0

可能是元素在您嘗試點擊時無法點擊。您可以等待元素變成可點擊,然後嘗試單擊它,如下圖所示:

WebDriverWait wait = new WebDriverWait(driver, 10); 
wait.until(ExpectedConditions.elementToBeClickable(By.xpath("//div/div/div[2]/div/div/div/div/div/div/div/div/div/div/div"))); 
driver.findElement(By.xpath("//div/div/div[2]/div/div/div/div/div/div/div/div/div/div/div")).click(); 

如果上面的代碼不爲你工作,那麼你可以使用Javascriptexecutor作爲一種變通方法,如下圖所示:

JavascriptExecutor e = (JavascriptExecutor)driver; 
e.executeScript("arguments[0].click();", driver.findElement(By.xpath("//div/div/div[2]/div/div/div/div/div/div/div/div/div/div/div"))); 

請告訴我,以上解決方案是否適合您。

+0

我切換到c#web支持的驅動程序 –

0

當您運行硒TC時,請確保瀏覽器最大化。有時,由於分辨率較小,元素可能會重疊。

+0

謝謝你的回答。我切換到c#web支持的驅動程序,因爲它使用了clickat命令。 –