TestScenarios()
シナリオのデータベースをループするメソッドがあり、データベース内の各アイテムについて、指定された URL に移動し、スクリーンショットを撮り、いくつかの値を変更します。
私が問題を抱えているのはwebBrowser1.Navigate(Url);
ラインです。関数をステップ実行するとUrl
、値がhttp://google.com
になりますが、Web コントロールは表示されません。
代わりに、「ナビゲーションがキャンセルされました」という行に沿って何かを言っているだけなので、何かがNavigate()
機能の完了を妨げていると私は信じています.
さらに、webBrowser1.Navigate("http://google.com");
while ループの外側に線を引くと、Web コントロールが表示されます。これは、webBrowser
コントロールが適切に機能しているように見えることを意味します。
基本的には、方向性の助けが必要です。コードは以下です。
public void TestScenarios()
{
using (SqlConnection conn = new SqlConnection(connectionString))
{
conn.Open();
using (SqlCommand cmd = new SqlCommand("SELECT * FROM Scenarios WHERE MarkedForDeletion!='1'", conn))
{
SqlDataReader reader = cmd.ExecuteReader();
if (reader.HasRows)
{
while (reader.Read())
{
// Store scenario information
int Id = (int) reader["ScenarioID"];
string Data = reader["ScenarioData"].ToString();
string Url = reader["ScenarioURL"].ToString();
// Navigate to webBrowser
webBrowser1.Navigate(Url);
// Do test
int HasSucceeded = 0;
if (Url == "http://bing.com")
{
HasSucceeded = 1;
}
// Take Screenshot
Bitmap bitmap = new Bitmap(Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height);
Graphics g = Graphics.FromImage(bitmap);
g.CopyFromScreen(0, 0, 0, 0, Screen.PrimaryScreen.Bounds.Size);
ImageConverter converter = new ImageConverter();
Byte[] screenshot = (byte[])converter.ConvertTo(bitmap, typeof(byte[]));
// Insert results
InsertResults(Id, HasSucceeded, screenshot);
// Delete scenario
// DeleteScenario(Id);
// Mark scenario for deletion
MarkScenario(Id);
}
}
reader.Close();
}
}
}