在我的窗口中,我将登录用户的按钮设置为站点。单击按钮后,它应该更改label.Content = "logging in..."
,然后使用selenium打开chrome驱动程序,登录到站点,然后停止。问题是标签在下一个方法完成之前没有改变。但是在下一个方法之后,我有另一个标签更改成功或失败,这看起来基本上登录标签永远不会出现在UI上。
考虑到我的登录工作在与UI相同的线程上,因此UI不能用于记录时间。但是我的标签应该在程序进入这个状态之前发生变化。
此外,我尝试在执行或添加Thread.Sleep(2000);
之前将标签放入方法中,以使程序等待标签设置。没有工作。
我尝试更改sendusername()
的帖子,它给了我标签更改,但我的登录名和密码没有正确发送。
您认为可能是什么原因?
public void BtnSubmit_OnClick(object sender, RoutedEventArgs e)
{
if (TxtUsername.Text.Length<3 || TxtPassword.Text.Length<3)
{
MessageBox.Show("You need to fill both boxes!");
}
else if (!TxtUsername.Text.Contains("@"))
{
MessageBox.Show("You need to add valiable e-mail adress");
}
else
{
LblLogin.Content = "Logging in..."; // changes label content
sendUsername(); // opens chromedriver and logs us into the website
((MainWindow)Application.Current.MainWindow).tradeUrl = tradeUrl;
((MainWindow) Application.Current.MainWindow).username = username;
((MainWindow) Application.Current.MainWindow).login = TxtUsername.Text;
((MainWindow)Application.Current.MainWindow).password = TxtPassword.Text;
}
}
答案 0 :(得分:4)
你的BtnSubmit_OnClick()在方法中的所有代码都执行之前不会返回响应,它实际上并不是实时的。
(1)您可以异步执行sendUserName,这样您的方法就不必等待它完成返回响应 (2)或者您可以通过JavaScript更新标签内容
对于选项#2,您可以使用OnClientClick属性更新标签文本。
<asp:Button ID="Button1" runat="server" OnClientClick="updateLabel();" OnClick="Button1_Click" Text="Button" />