Saya menggunakan Specflow/Selenium untuk mengotomatiskan pengujian aplikasi web yang saya kerjakan di lingkungan ASP.Net. Sebagian besar 'klik tombol' menyebabkan pemuatan halaman selesai. Saya menjalankan baris kode berikut untuk dieksekusi ketika mengklik tombol seperti itu, tetapi itu adalah potongan kode yang berkedip-kedip - terkadang ia menemukan elemen dan di lain waktu gagal. Mengapa demikian?
public class CreateQuestionPOM : BasePOM
{
//Flickering find!
[FindsBy(How = How.XPath, Using = "//label[text()[contains(.,'True/False')]]")]
private IWebElement trueFalseOption;
[FindsBy(How = How.XPath, Using = "//a[@ct='Button' and @title='Next']")]
private IWebElement nextButton;
public CreateQuestionPOM(IWebDriver driver) : base(driver) { }
public void CreateTrueFalseQuestion()
{
trueFalseOption.Click();
nextButton.Click();
WebDriverWait wait = new WebDriverWait(GetDriver(), TimeSpan.FromSeconds(20));
wait.Until(driver1 => ((IJavaScriptExecutor)GetDriver()).ExecuteScript("return document.readyState").Equals("complete"));
}
}
Tanda tangan metode di atas serupa dengan semua klik tombol yang terjadi pada halaman. Potongan kode di atas dipanggil setelah tombol sebelumnya diklik. Caranya sangat mirip dengan di atas - tunggu document.readystate
menjadi complete
. Tapi kenapa ini sering sekali berkedip dan apa solusi yang disarankan?
wait.Until
. - person PhD   schedule 02.10.2015