vba - 硒基础。如何处理错误的登录信息
问题描述
我目前编写了一个 excel 宏,它显示一个要求输入用户名和密码的用户表单。输入信息时,会启动 selenium chromedriver,打开登录页面,并发送用户输入的登录凭据以供输入。如果信息正确,这很有效,但如果发送了错误的信息,显然它不会登录,因此其余代码运行以查找页面上不存在的数据,我得到一个运行时错误。我想要某种识别登录错误的代码,通过消息框(或其他方式)通知用户,然后退出子。这就是我所拥有的。
'SSO is the username in this case
Dim SSO
Dim password
SSO = SSOText.Value
password = passwordText.Value
Dim cd As Selenium.ChromeDriver
Set cd = New Selenium.ChromeDriver
cd.Start
cd.Get "desiredURL"
'wait 5 seconds for page to load (may need to change time)
Application.Wait (Now + TimeValue("00:00:06"))
'store HTML locations as variables
Dim UsernameInput As Selenium.WebElement
Dim PasswordInput As Selenium.WebElement
Dim LogInButton As Selenium.WebElement
Set UsernameInput = cd.FindElementByName("username")
Set PasswordInput = cd.FindElementByName("password")
Set LogInButton = cd.FindElementByName("submit")
'send the user entered login credentials to HTML address
UsernameInput.SendKeys SSO
PasswordInput.SendKeys password
'click login
LogInButton.Click
'wait for login to load page
Application.Wait (Now + TimeValue("00:00:05"))
'grab data
Dim lineTable As Selenium.WebElement
Set lineTable = cd.FindElementById("lineTable")
lineTable.AsTable.ToExcel ThisWorkbook.Worksheets("C2 1st Shift Production Report").Range("X2")
'clear data from userform
Unload Me
此外,我在代码中写了明确的等待以等待页面加载。这些工作 95% 的时间都有效,但 5% 的时间并没有等待足够长的时间。如果有人知道一种方法来保证我不会从未加载的页面中得到运行时错误,那也很棒!谢谢!
解决方案
推荐阅读
- wso2 - 如何在 wso2 api manager 中测试 CheckPhoneNumber 验证 API
- kubernetes - Kubernetes pod 和他的主机之间通信的最快方式是什么?
- haskell - 有没有更好的方法来添加两种自定义数据类型的值,其中两者都是 MonoFunctor 的实例?
- vba - 在类模块中使用带参数的 Sub
- java - Android 测试运行失败:没有测试结果
- nested - 如何验证空手道中嵌套 json 数组中的元素?
- rust - 在 Rust 中返回 Result<_, impl Error> 而不是 Result<_, &str> 的最佳实践?
- python - 熊猫匹配两列并创建另一列
- mysql - SUM 属于同一组的产品数量(group_id)
- javascript - 使用 .filter 删除 React 中的函数