如果元素存在,则执行操作,如果不存在,则跳过下一步

If element present do stuff, if not present skip next

如果元素存在,我需要做一些事情,如果该元素不存在,我将需要跳到代码的其余部分。我尝试了几种方法,但我不知道为什么它不起作用,代码对我来说看起来合乎逻辑并且它适用于类似的宏。 代码如下:

Do
    DoEvents
Loop Until driver.ExecuteScript("document.readystate") <> "complete"

If driver.FindElementByName("x").IsPresent Then
Item.Offset(0, 2).Value = "Completed already" 'And need to skip to next iteration

ElseIf driver.FindElementByName("x") Is Nothing Then
Set cancel= driver.FindElementByName("cancelbutton")
cancel.Click


Set myVar= Item.Offset(0, 1)
Set radiobtn = driver.FindElementByXPath("//input[@value='" & myVar & "']")    
radiobtn.Click

Set cancelSelected = driver.FindElementByName("submitCancel")
cancelSelected.Click
driver.SwitchToAlert.Accept
Item.Offset(0, 2).Value = "Canceled"
driver.Refresh
driver.Wait 1000
End If

我也试过如果元素X存在就找其他元素的情况

If driver.FindElementByName("x").IsPresent Then
Item.Offset(0, 2).Value = "Completed already"

ElseIf driver.FindElementByName("Y").IsPresent Then
Set cancel= driver.FindElementByName("cancelbutton")
cancel.Click


Set myVar= Item.Offset(0, 1)
Set radiobtn = driver.FindElementByXPath("//input[@value='" & myVar & "']")
radiobtn.Click

Set cancelSelected = driver.FindElementByName("submitCancel")
cancelSelected.Click
driver.SwitchToAlert.Accept
Item.Offset(0, 2).Value = "Canceled"
driver.Refresh
driver.Wait 1000
End If

当页面上存在元素 X 时,元素 Y 不存在,反之亦然。我也试过 .count > 0 但还是不行。谁能帮我解决问题或给我一些提示和技巧?

尝试不使用 driver.findelement,而是使用 driver.findelements(By.whatever).size()>0 我希望它适用于 vbs,它适用于 Java 100 %.

其实我在Udemy上买了一门课程,自己找到了答案。有几种方法可以找到一个元素是否存在以及如果它存在或不存在下一步该做什么。有趣的是,解决方案是如此简单,我很尴尬我错过了。

第一个Dim By AS New By 然后在if子句前后加一秒wait:

driver.Wait 500
If driver.IsElementPresent(By.Name("uncompleteButton__")) Then
Item.Offset(0, 2).Value = "Can't do stuff, go to next iteration."
Else
Set cancelitemsbtn = driver.FindElementByName("cancelButton")
cancelitemsbtn.Click
Item.Offset(0, 2).Value = "Can do stuff"
driver.Wait 500
End if