gpt4 book ai didi

java - 如何在 selenium webdriver 中定义具有多个类的按钮的 xpath

转载 作者:行者123 更新时间:2023-11-30 08:33:22 25 4
gpt4 key购买 nike

有两个HTML弹出按钮几乎相似。除了跨度文本外,这两个按钮都相同,没有什么不同。

谁能给点建议,OK按钮的xpath怎么写?

我在 xpath 下面写了,但系统显示错误为 '.

我的 Xpath

driver.findElement(By.xpath("//div[@class='ui-dialog-buttonset']/descendant::button[@class='ui-button']/span[contains(@class, 'ui-button-text') and text() = 'OK']")).click();

错误

org.openqa.selenium.NoSuchElementException: no such element: Unable to locate element:    

这是我的弹出窗口的 HTML 代码:

HTML

<div class="ui-dialog ui-widget ui-widget-content ui-corner-all ui-front ui-dialog-buttons ui-draggable" style="height: auto; width: 350px; top: 295.5px; left: 621px; display: block; z-index: 102;" tabindex="-1" role="dialog" aria-describedby="DivExtension" aria-labelledby="ui-id-2">
<div class="ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix ui-draggable-handle">
<span id="ui-id-2" class="ui-dialog-title">内線番号</span>
<button class="ui-button ui-widget ui-state-default ui-corner-all ui-button-icon-only ui-dialog-titlebar-close" type="button" role="button" title="Close">
<span class="ui-button-icon-primary ui-icon ui-icon-closethick"></span>
<span class="ui-button-text">Close</span>
</button>
</div>

<div id="DivExtension" class="display-none ui-dialog-content ui-widget-content" style="display: block; width: auto; min-height: 0px; max-height: none; height: 68px;">
<div id="extRow" class="display-none" style="display: block;">
<p class="form-label">
<label for="extension">内線番号</label>
</p>
<p class="form-input">
<input id="Extension" class="text" type="text" placeholder="Extension" value="">
</p>
</div>
</div>

<div class="ui-dialog-buttonpane ui-widget-content ui-helper-clearfix">
<div class="ui-dialog-buttonset">
<button class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only" type="button" style="height: 34px; width: 104px;" role="button">
<span class="ui-button-text">OK</span>
</button>

<button class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only" type="button" style="height: 34px; width: 124px;" role="button">
<span class="ui-button-text">キヤンセル</span>
</button>
</div>
</div>

最佳答案

取决于页面上是否有多个带有文本 OK 的按钮。

如果你想使用多个条件,你也可以使用类似的东西
//*[条件_1][条件_2]

在这种情况下:

//span[@class='ui-button-text'][text()='OK']

或者对于按钮:

//button[@class='ui-button'][.//span[contains(text(), 'OK')]]

对于多个类示例:

//button[@class='ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only']

或者当您将它与 contains 一起使用时。注意:如果需要,请确保您正在等待该元素。

对于具有多个类的元素,您有 2 个选项:

  1. 使用@class='my_class'这意味着使用属性 class => my_class 的整个值将是所有类,整个字符串

  2. 使用 contains(@class, 'my_class')此选项允许您仅使用类属性值的一部分 => my_class 可以是字符串的任何部分:ui、button、ui-button 等。

在你的例子中,你使用了 button[@class='ui-button'] 这是不正确的,因为按钮有 class="ui-button ui-widget ui-state -default ui-corner-all ui-button-text-only”

关于java - 如何在 selenium webdriver 中定义具有多个类的按钮的 xpath,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39507467/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com