我嘗試使用 SELENIUM & JAVA 單擊特定按鈕但沒有成功,但我收到此錯誤訊息:
Expected condition failed: waiting for element to be clickable: By.xpath: //*[@id="documentation"]/div/div[2]/div/button (tried for 10 second(s) with 500 milliseconds interval)
該按鈕有這個:
<button type="button" class="btn btn-sm btn-link add-row">Upload FILE</button>
XPATH 是:
//*[@id="documentation"]/div/div[2]/div/div/button
我這樣做了:
WebDriverWait wait10735 = new WebDriverWait(driver,Duration.ofSeconds(10));
JavascriptExecutor executor3735 = (JavascriptExecutor)driver;
WebElement elementCat4735=wait10735.until(ExpectedConditions.elementToBeClickable(By.xpath("//*[@id=\"documentation\"]/div/div[2]/div/button")));
我在這里做錯了什么?
uj5u.com熱心網友回復:
如果您使用 xpath:
//button[text()='Upload FILE']
應該管用。
為什么會這樣?
問題是您使用的是xpath:
xpath //*[@id=\"documentation\"]/div/div[2]/div/button
使用該 xpath,您正在做的是:
- 定位元素
id="documentation" - 然后轉到該元素的第一個 div 子元素
- 然后轉到前一個 div 的第二個 div 孩子
- 然后轉到前一個 div 的第一個 div 子級
- 然后轉到按鈕
如您所見,您的最終元素(按鈕)取決于要定位的其他幾個父元素。一旦這些父元素之一發生更改,您的 xpath 就不再有效。
根據元素本身的屬性而不是圍繞它的元素來定位 xpath 要好得多。
在這種情況下,我使用了元素的文本。
我不知道這是否可能,但如果可能的話,一個好主意是與開發人員討論使用 id 來處理您將在自動化中使用的所有元素。這是一個團隊合作!
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/531045.html
標籤:javascript爪哇硒路径javascript执行器
