我想在我的網站上使用硒web驅動程序的JavaScript自動化測試。使用等待與硒web驅動程序異步內容
如何使用wait方法在頁面加載時可能未準備好的內容的情況下運行測試,例如數據來自外部api等?
在我的示例中,我的內容正在通過外部js文件加載。你可以在this fiddle中看到頁面的樣子,因爲小提琴被封裝在一個iframe中,所以我無法將它鏈接到我的代碼中。
<head>
<script src="https://cdn.auth0.com/js/lock/10.2/lock.min.js"></script>
</head>
<body onload="lock.show();">
<div id="content">
<script type="text/javascript">
var domain = 'contoso.auth0.com';
var clientID = 'DyG9nCwIEofSy66QM3oo5xU6NFs3TmvT';
var lock = new Auth0Lock(clientID, domain);
lock.show({
focusInput: false,
popup: true,
}, function (err, profile, token) {
alert(err);
});
</script>
</div>
</body>
我可以使用睡眠工作,但無法保證在超時完成後我的內容將準備就緒。
const {Builder, By, Key, until} = require('selenium-webdriver');
let driver = new Builder()
.forBrowser('firefox')
.build();
driver.get('MY_URL')
driver.sleep(2000).then(function() {
driver.findElement(By.name('email')).sendKeys('[email protected]')
driver.findElement(By.name('password')).sendKeys('test')
//driver.findElement(By.className('auth0-lock-submit')).click()
})
但是,如果我嘗試用等待
function login() {
return driver.findElement(By.name('email')).sendKeys('[email protected]')
}
driver.get('MY_URL')
driver.wait(login, 5000)
我得到NoSuchElementError: Unable to locate element: *[name="email"]
我怎樣才能得到這個工作讓我等待我的內容,然後再繼續可用。
這是夜間或???你應該爲你正在尋找的語言添加一個標籤。你有沒有相當於'WebDriverWait'?我的背景是C#/ Java,我只是等待顯示電子郵件元素等。 – JeffC
[Nightwatch:比\'.pause(1000)\'更好的方法''以避免脆性測試?](https://stackoverflow.com/questions/33224546/nightwatch-better-way-than-pause1000-to-避免脆弱測試) – JeffC
我使用Selenium-Java和Selenium-Python,我不知道Selenium-JavaScript中的語法。但我可以建議你一個策略。你會接受嗎? – DebanjanB