通过Java中的动态ID为selenium脚本找到一个值

时间:2016-03-14 09:44:42

标签: java selenium

以下是页面的源代码,我想从下面搜索名称为“Dropbox”的元素。 id是随机id,因此无法使用它进行搜索。

<div class="main-container">
<div class="navbar-content">
<div class="main-content">
<div id="dnsrp3wdegf881" class="container" style="height: 564px;">
<div class="row">
<div class="row">
<div class="col-md-12" style="padding:0">
<div class="panel panel-default" style="border:none; margin-bottom: 0;">
<div class="panel-body messages">
<div id="records-section" style="display: block; float: left; position: static;" rel="sections">
<ul class="messages-list">
<li id="3nsprserf" class="messages-search thegrey">
<li id="3nsprserfcnf55" class="messages-search thegrey" style="border-bottom:none; padding-top:0; padding-bottom:0">
<li>
<li class="messages-search" style="padding: 10px 0; padding-top:0; padding-bottom:0">
<div id="maintblcnts3cdr3" class="panel-scroll ps-container" style="height: 435px;">
<div id="preloadongo" style="width: 100%; height: 100%; position: absolute; left: 0px; top: 0px; display: none;"></div>
<div id="tblContents_wrapper" class="dataTables_wrapper form-inline" role="grid">
<div class=""></div>
<table id="tblContents" class="table table-hover table-full-width dataTable" aria-describedby="tblContents_info">
<tbody id="table_body" role="alert" aria-live="polite" aria-relevant="all">
<tr id="4FDF448C566E5977" class="odd" style="opacity: 1;">
<tr id="7F5AA7C9566E5977" class="even markrow">
<tr id="3CD258A7566E5977" class="odd">
<tr id="E1DE54EE566E5977" class="even">
<tr id="DCDFD780566E5977" class="odd">
<tr id="1FE7B06E566E5856" class="even">
<tr id="8D10800C566E5856" class="odd">
<tr id="5B1A3BAC566E5977" class="even">
<tr id="2B2A9F30566E5856" class="odd">
<tr id="6A6FDCCD566E5977" class="even">
<tr id="B0EAABBB566E5977" class="odd">
<td class="">
<td id="B0EAABBB566E5977" class="">
<td id="B0EAABBB566E5977" class="main-record">
<b>Dropbox</b>            //Have to search and click on this element
<span>splashdrop</span>
</td>
</tr>
<td>

Source code

4 个答案:

答案 0 :(得分:0)

尝试以下代码: -

driver.findElement(By.className("main-record")).findElement(By.tagName("b")).click();

OR

尝试以下XPath

//tbody[@id='table_body']/tr[11]/td[3]

或尝试以下XPath

//tbody[@id='table_body']/tr[11]/td[3]/b

希望它会对你有所帮助:)。

答案 1 :(得分:0)

您可以按班级搜索

driver.findElement(By.className("main-record")).click();

或者通过css单击子元素

driver.findElement(By.cssSelector("main-record > b")).click();

答案 2 :(得分:0)

如果它是可点击的,那么它必须有一些支持点击的标签,因为你不能直接在html上放任何东西并使其可以点击而不将该文本正确地绑定到控件上。
为了您的回答,您的文本位于 b 标记中,然后查找该标记的元素并搜索整个数组内部文本。

     List<WebElement> linkElements = driver.findElements(By.tagName("b")); 
        //after that iterate through each and search for your text like  
    ForEach(WebElement element in linkElements )        
       {            
             if(element.getText()=="Dropbox")       
        // Do anything with that element then when this condition gets true
     }

答案 3 :(得分:0)

使用contains文字尝试xpath:

driver.findElement(By.xpath("//*[contains(text(), 'Dropbox')]"))