0
我有下面的代碼塊,使用動作序列來執行以下操作:Webdriverjs沒有睡眠語句陳舊元件引用
- 點擊一個鏈接到頁面
- 等待一個輸入字段在頁面上出現
- 點擊輸入框
- 刪除存在
- 發送鍵序列輸入一個位置
- 喜的任何文本t爲向下箭頭(輸入採用autcomplete)
- 按下回車鍵來選擇正確的位置
- 點擊保存按鈕
我已閱讀,使用driver.sleep()
語句不建議,但我不能讓代碼在沒有它們的情況下正常工作。
這裏是代碼塊:
driver.wait(until.elementLocated(By.css("a[href*='details/location']")), 5000)
driver.findElement(By.css("a[href*='details/location']")).click()
driver.wait(until.elementLocated(By.id("user_location")), 5000)
let loc = driver.findElement(By.id("user_location"))
let save = driver.findElement(By.xpath("//span[contains(text(), 'Save')]"))
driver.sleep(3000)
driver.actions().
click(loc).
sendKeys(Key.DELETE)
.sendKeys('My location')
.perform()
driver.sleep(1000)
driver.actions().
sendKeys(Key.ARROW_DOWN).
sendKeys(Key.ENTER).
perform()
driver.sleep(1000)
driver.actions().
click(save).
perform()
有沒有更好的方式去這樣做,和/或是否有辦法消除睡眠語句?爲什麼在發出睡眠聲明時發生了錯誤stale element
?
與您的代碼相同的結果(雖然它更清潔)。如果我不使用第一個'driver.sleep(3000)',那麼自動完成文本無論出於何種原因都無法正確填充。我想完全擺脫睡眠聲明,但是我似乎無法在沒有它們的情況下運作。 – jmreicha
你應該試着弄清楚睡眠正在完成的是什麼。在第一種情況下,您是否可以檢測到自動填充文本正在填充?它是用HTML顯示的嗎? – JeffC
不幸的是,我很難搞清楚如何檢測自動完成,因爲選項不在DOM中顯示。 – jmreicha