我在为java选择selenium中的按钮时遇到问题



你好,我正在尝试选择并单击按钮"立即预订";然而,当我查看源代码时,它显示了以下内容。。。

<div class="pl-0 mr-3 sticky-btn-wrapper">
<div class="ko-container book-now-btn-container">
<button class="btn btn-secondary text-uppercase btn-landing go-to-session" data-eid="757231" data-aid="97739" data-isavailable="true"> Book now</button>
</div>
</div>

<div class="btn-book-top sticky-btn-wrapper justify-content-end" id="book-button-top">
<div id="sticky-bottom-btn" class="sticky-bottom-btn flex-row w-100">
<div class="ko-container book-now-btn-container">
<button class="btn btn-secondary text-uppercase btn-landing go-to-session" data-eid="757231" data-aid="97739" data-isavailable="true">Book now</button></div>
</div>
</div>
</div>

当我检查";立即预订";Firefox中的链接显示以下

<div class="ko-container book-now-btn-container">
<button class="btn btn-secondary text-uppercase btn-landing go-to-session" data-eid="757231" data-aid="97739" data-isavailable="true">
Book now
</button>
</div>

[为什么有两个按钮class="btn btn secondary text大写btn landing to session"的实例?]

我已经尝试选择的第一个实例

WebElement wb = myDriver.findElement(By.xpath ("//div[@class='pl-0 mr-3 sticky-btn-wrapper'] and button[@class='btn btn-secondary text-uppercase btn-landing go-to-session']"));
wb.click();

但我在Junit中得到了以下例外。。。

org.openqa.selenium.InvalidSelectorException: 
Given xpath expression "//div[@class='pl-0 mr-3 sticky-btn-wrapper'] and button[@class='btn btn-secondary text-uppercase btn-landing go-to-session']" 
is invalid: TypeError: Document.evaluate: Result type mismatch

如有任何帮助,我们将不胜感激!

您不需要使用and操作数作为定位器,只需将xpath更改为:

//div[@class='pl-0 mr-3 sticky-btn-wrapper']//button

当您有两个或多个相似元素并且需要添加更多限制时,需要使用关键字and。此外,and参数应该应用于同一个标记,而不是不同的标记。

例如:

<div class='1' style='1'>
<button>Button1</button>
</div>
<div class='1' style='2'>
<button>Button2</button>
</div>
<div class='2' style='2'>
<button>Button3</button>
</div>

如果您需要获取按钮2的定位器:

//div[@class='1' and @style='2']/button

请尝试以下xpath:

//div[contains(text(),'Book now')]

PS:如果我们在HTML DOM中是否有唯一条目,请检查dev tools(谷歌铬)。

检查步骤:

Press F12 in Chrome->转到element部分->进行CTRL + F->然后粘贴xpath,看看您想要的element是否通过1/1匹配节点突出显示。

如果有多个条目,请尝试索引:

(//div[contains(text(),'Book now')])[1]

(//div[contains(text(),'Book now')])[2]

事实上,你可以有[3][4]和任何数字,但你必须确保在HTMLDOM中它是1/1匹配的。

相关内容

  • 没有找到相关文章

最新更新