如何使用Selenium JAVA点击无序列表

时间:2018-01-31 21:37:36

标签: java selenium dynamic unordered

请帮我写下xpath,从下面的HTML中选择Name address Maintenance。它是一个无序列表,其中id每次都会动态变化。我用了

driver.findElement(By.xpath("//*[contains(text(), 'Name Address Maintenance')]")).click();   

但看到错误消息

  

无法使用提供的xpath定位元素

HTML:

<ul class="ui-autocomplete ui-front ui-menu ui-widget ui-widget-content" id="ui-id-290" tabindex="0" role="combobox" style="display: block; top: 112px; left: 138.6px; width: 231px;">
    <li class="ui-menu-item" id="ui-id-318" tabindex="-1">Accounting/Closing</li>
    <li class="ui-menu-item" id="ui-id-319" tabindex="-1">Account Maintenance</li>
    <li class="ui-menu-item" id="ui-id-320" tabindex="-1">Account Opening</li>
    <li class="ui-menu-item" id="ui-id-321" tabindex="-1">Account Review</li>
    <li class="ui-menu-item" id="ui-id-322" tabindex="-1">Administration</li>
    <li class="ui-menu-item" id="ui-id-323" tabindex="-1">Advance Distribution</li>
    <li class="ui-menu-item" id="ui-id-324" tabindex="-1">Asset Movement</li>
    <li class="ui-menu-item" id="ui-id-325" tabindex="-1">Cash Receipt</li>
    <li class="ui-menu-item" id="ui-id-326" tabindex="-1">Cash Disbursement</li>
    <li class="ui-menu-item" id="ui-id-327" tabindex="-1">Court Accounting</li>
    <li class="ui-menu-item" id="ui-id-328" tabindex="-1">Loan Request</li>
    <li class="ui-menu-item" id="ui-id-329" tabindex="-1">Name Address Maintenance</li>
    <li class="ui-menu-item" id="ui-id-330" tabindex="-1">Alternate Account Opening</li>
    <li class="ui-menu-item"  tabindex="-1">Trust Forms</li>
</ul>

4 个答案:

答案 0 :(得分:0)

以下对我来说工作正常 WebElement typeBox = driver.findElement(By.xpath(&#34; // @id =&#39; 1_s_1_l_SR_Type_New _&#39;]&#34;)); typeBox.click(); driver.findElement(By.xpath(&#34; // [@ id =&#39; 1_SR_Type_New _&#39;]&#34;))。sendKeys(&#34; Name Address Maintenance&#34; );

答案 1 :(得分:0)

当selenium没有直接找到元素时,有时会发生变化,所以我们需要从父节点开始。

其次,它总是更好地使用完整的文本(不仅仅是包含),试试这个,它应该工作:

driver.findElement(By.xpath(“// ul / li [text()='Name Address Maintenance']”))。click();

答案 2 :(得分:-1)

试试这个。它的工作原理

def out_func(arg_1):
    print 'This print statement is in Python'
    a = int(arg_1 * 10)
    return a

答案 3 :(得分:-1)

试试这个

//child::li[@class='ui-menu-item' and contains(text(),'Name Address Maintenance')]

.//li[@class='ui-menu-item' and contains(text(),'Name Address Maintenance')]