gpt4 book ai didi

java - 使用 Selenium Webdriver 从 标签中选择一个值

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:07:56 25 4
gpt4 key购买 nike

我正在使用 Selenium Webdriver 并致力于在 Chrome 上自动化 AngularJS Web 应用程序。在我点击应用程序上的下拉列表之前,一切进展顺利。每次我尝试从中选择一个值时,我的测试都会崩溃。我一直在做这方面的研究,但我只看到了 2 个解决方案(我都尝试过但都没有用)

  1. 使用Select目的。这不起作用,因为 html 标签不是 <select> , 它的 <md-select>这未通过测试。
  2. 然后我尝试只点击下拉元素并点击值 - driver.findElement(By.xpath("xpath to dropdown list")).click();driver.findElement(By.xpath("xpath do dropdown value")).click();

对于示例 2,我还尝试将其创建为 WebElement变量和调用 click()分开,但这也不起作用。

关于如何解决这个问题有什么想法吗?

更新

下拉列表的 HTML

<div ng-switch-when="dropdown" class="ng-scope">
<zf-form-dropdown>
<div class="dropdown">
<div layout="row">
<div flex="50" class="quote-label">
<p ng-bind-html="::label" class="ng-binding">Title</p>
</div>
<div ng-show="false" flex="10" class="tooltip-icon ng-hide" ng-click="showToolTip(field.get('toolTip'))" role="button" tabindex="0" aria-hidden="true"><img src="img/item-question@2x.png"></div>

<md-select flex="" ng-disabled="quote.isRated() || !input.enabled" ng-change="onDropdownChange()" ng-model="input.value" class="ng-valid md-default-theme ng-touched ng-dirty" role="combobox" id="select_0Q9" aria-haspopup="true" aria-expanded="false" aria-labelledby="select_label_0I1" tabindex="0" aria-disabled="false" aria-invalid="false" aria-owns="select_menu_0Q8"><md-select-label class="md-select-label md-placeholder" id="select_label_0I1"><span></span><span class="md-select-icon" aria-hidden="true"></span></md-select-label></md-select>
</div>
</div>
</zf-form-dropdown>
</div>

我要选择的值的 HTML

<md-option ng-value="::item.val" ng-selected="item.checked" ng-repeat="item in getOpts()" tabindex="0" class="ng-scope" role="option" aria-selected="false" id="select_option_0QD" value="MR">
<div class="md-text ng-binding">Mr</div>
<div class="md-ripple-container"></div>
</md-option>

下拉列表的 xpath 是 //*[@id="select_0Q9"]下拉值的 xpath 是 //*[@id="select_option_0QD"]

最佳答案

如果您确定您的 Xpath 没问题,那么您也可以单击使用 javascriptexecutor,如下所示尝试一下:-

WebElement element= driver.findElement(By.xpath("//md-option[@id='select_option_0QD']/div[1]"));

JavascriptExecutor executor = (JavascriptExecutor) driver;
executor.executeScript("arguments[0].click();", element);

请根据您的方便随意定位上述代码中的元素。

按照我的说法,您的下拉列表的 xpath 应该如下所示:-

//md-option[@id='select_option_0QD']

我想我想点击的第一个 div 的 xpath 是:-

//md-option[@id='select_option_0QD']/div[1]

如果您想要第二个值,请将 [1] 更改为 [2]。

另一方面,您还可以将所有元素存储在列表中(如您所知,您不能使用选择)并根据需要或全部单击它们。

为此,您需要像这样使用 xpath:-

//md-option[@id='select_option_0QD']/div

现在将它实现到代码中:-

List<WebElement> allelemts = driver.findElements(By.xpath("//md-option[@id='select_option_0QD']/div"));
for(WebElement ele: allelemts){

driver.findElement(By.xpath("//md-option[@id='select_option_0QD']")).click();

JavascriptExecutor executor = (JavascriptExecutor) driver;
executor.executeScript("arguments[0].click();", ele);

}

希望对你有帮助:)

关于java - 使用 Selenium Webdriver 从 <md-select> 标签中选择一个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33130214/

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