如何使用VBA在SeleniumBasic中悬停并单击隐藏元素



我在这个平台上遵循了几个解决方案来解决这个问题,尤其是使用SeleniumBasic为vba 选择隐藏菜单项的问题

我可以在我试图自动化的网站的菜单上悬停,但我无法点击表格行(索赔提交(,这是表格/表格可见时的第二个选项。

我最初的目标是将鼠标悬停在页面的可见菜单上以显示下拉菜单,我通过循环实现了这一点。

现在,当(索赔(菜单可见时,我需要单击该表的第二个选项(索赔提交(。根据Trouble为vba使用SeleniumBasic选择隐藏菜单项的指示,我尝试使用xpath来引用该元素。

它返回

运行时错误"7":
NoSuchElementError
XPath=//a[./span[contains(.,'ClaimsSubmission'(]]找不到元素

Private WB As Selenium.WebDriver
Sub Test()
Set WB = New Selenium.ChromeDriver
WB.Start
WB.Get "https://health.axamansard.com/axamansardProviderlogin/Index.aspx"
Dim Menu As WebElement
Dim Menus As WebElements
Dim MenuSubmission As WebElement
WB.FindElementByName("txtUname").SendKeys "Almadina"
WB.FindElementByName("txtPass").SendKeys "Nhisdesk@1234"
WB.FindElementByName("btnSubmit").Click
Set Menus = WB.FindElementsByClass("a")
For Each Menu In Menus
If Menu.Text = "Claims" Then
WB.Mouse.MoveTo Menu

Set MenuSubmission = WB.FindElementByXPath("//a[.//span[contains(.,'Claims Submission')]]")
MenuSubmission.Click

End If
Next
End sub

WebScript

<table class="menu" id="Claims" width="150px" bgcolor="white" style="visibility: hidden;">
<tbody><tr height="19px">
<td class="menu"><a class="a" 
href="../Forms/ClaimsBatch.aspx">Claims Batch</a></td>
</tr>
<tr height="19px">
<td class="menu"><a class="a" 
href="../Forms/ClaimSubmission.aspx">Claims Submission</a></td>
</tr>
<tr height="19px">
<td class="menu"><a class="a" 
href="../Forms/ClaimSubmissionList.aspx">Claims Submission List</a></td>
</tr>
<tr height="19px">
<td class="menu"><a class="a" 
href="../Forms/ClaimsUpload.aspx">Claims Upload</a></td>
</tr>
<tr height="19px">
<td class="menu"><a class="a" 
href="../Forms/Calimreviewlist.aspx">Claims Status</a></td>
</tr>
<tr height="19px">
<td class="menu"><a class="a" 
href="../Forms/ProviderClaimsBatchDetails.aspx">Provider Claims Batch Details/Claim Credit Note Details</a></td>
</tr>
</tbody></table>

链接索赔提交扩展路径似乎有点错误。您可以使用以下定位器策略之一:

  • FindElementByXPath:

    WB.FindElementByXPath("//table[@id='Claims']//td/a[.='Claims Submission']").Click
    
  • FindElementByXPath相对于声明

    WB.FindElementByXPath("//a[.='Claims']//following::table[1]//td/a[.='Claims Submission']").Click
    

最新更新