我正在使用下面提到的代码边缘浏览器的自动化
除“If then Else”块外,代码工作正常。
完整的脚本如下所示
Dim Obj As New WebDriver
' search for company - SF 1cr and above
Sub EdgeAutoSF1CRA0()
Set Obj = New Selenium.EdgeDriver
Dim ele As WebElement
Dim By As New Selenium.By
Obj.SetCapability "ms:edgeOptions", "{""excludeSwitches"":[""enable-automation""]}"
Obj.Start "edge", ""
Obj.Get "https://*********************"
Obj.Window.Maximize
Obj.FindElementByName("croreAccount").SendKeys ("Search")
Obj.FindElementByXPath("//*[@id='loadSuitFiledDataSearchAction']/div[1]/div[3]/div[4]/img").Click
Obj.FindElementById("borrowerName").SendKeys (ThisWorkbook.Sheets("Sheet1").Range("C5").Value)
Obj.FindElementByXPath("//*[@id='search-button']/ul/li[1]/div/input").Click
Obj.Wait 30000
If Obj.FindElementByCss("#downloadReport").Attribute("Style" = "display") = "none" Then
Obj.FindElementByXPath("//*[@id='three-icons']/ul/li[3]/a/div").Click
Else
Obj.FindElementByXPath("//*[@id='downloadReport']/div").Click
End If
End Sub
在If then Else语句中,我想搜索id“downloadReport”的style属性,查找“display:none”
网站上的代码为< a href="downloadStatusReport" id="downloadReport" style="display: none;"><div class="download-icon">Download</div></a>
但是,代码始终将语句评估为False,然后继续执行命令"Obj.FindElementByXPath("//*[@id='downloadReport']/div").Click"
2条答案
按热度按时间vcudknz31#
1.属性名称为
style
,而不是大写的Style
。1.您可以构造定位器,使所需的样式值成为定位器本身的一部分。
1.您可以使用
FindElements
代替FindElement
,这样它将返回一个匹配元素的列表,如果找到这样的元素,它将返回一个非空列表,否则它将是一个空列表。使用此选项,您可以检查返回的列表是否为空,如下所示:gwbalxhn2#
简而言之,定位一个 *
style
* 属性设置为***display: none;
的元素是没有价值的。即使您定位了该元素,您也无法单击它。因此,If
-Then
-Else
* 逻辑不会按预期工作。相反,找到所需的元素,即visible和enabled**元素,这样您就可以调用单击它。