【问题标题】:How to identify each edit text field in Selenium if all their Xpath are same如果所有 Xpath 都相同,如何识别 Selenium 中的每个编辑文本字段
【发布时间】:2016-04-25 11:02:03
【问题描述】:

我正在尝试使用 java 在 selenium 的 8 个文本字段中传递值。但是当我使用他们的 xpath 时,所有 8 个文本字段都是一样的。如何通过分别识别每个字段在其中输入值?此页面中还有 3 个“保存”按钮,具有相同的 xpath。如何分别识别它们? 下面是我的代码(8 个文本字段和“保存”按钮的 xpath 相同):

        //Enter values in 8 textfields
        driver.findElement(By.xpath(".//*[@id='placement_link']")).sendKeys("aaa");
        driver.findElement(By.xpath(".//*[@id='placement_link']")).sendKeys("aaa");
        driver.findElement(By.xpath(".//*[@id='placement_link']")).sendKeys("bbb");
        driver.findElement(By.xpath(".//*[@id='placement_link']")).sendKeys("ccc");
        driver.findElement(By.xpath(".//*[@id='placement_link']")).sendKeys("ddd");
        driver.findElement(By.xpath(".//*[@id='placement_link']")).sendKeys("eee");
        driver.findElement(By.xpath(".//*[@id='placement_link']")).sendKeys("fff");
        driver.findElement(By.xpath(".//*[@id='placement_link']")).sendKeys("fff");

           //Click on 'Save' button
           driver.findElement(By.xpath(".//*[@id='submit']")).click();
           Thread.sleep(10000);

            //Enter recepient
            driver.findElement(By.xpath(".//*[@id='receipient_add']")).click();

            //click 'Save' button below recipient
            driver.findElement(By.xpath(".//*[@id='submit']")).click();
            Thread.sleep(10000);
    ***HTML****
    Relevant section of the text field:

<document>
<html class="js" lang="en" dir="ltr" xml:lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head>
<body class="not-front logged-in page-manage-listing-agent no-sidebars tableHeader-processed">
<!-- wrapper -->
<div id="wrapper">
<!-- container -->
<div id="container">
<!-- page_wrapper -->
<div id="page_wrapper">
<!-- page -->
<div id="page">
<!-- page-header -->
<div id="page-header" class="style_float">
<!--end page-header -->
<div class="clear"/>
<!-- main menu -->
<div class="style_main_menu">
<!--end main menu -->
<div class="clear"/>
<div id="subheading" class="style_flow">
<div class="clear"/>
<!-- center -->
<div id="center" class="style_center_content_default">
<!-- content above -->
<div class="style_content_above_wrapper">
<!-- end content above -->
<!-- left side bar -->
<div id="sidebar-left" class="sidebar">
<!--end left side bar -->
<div class="style_content_main_wrapper">
<div id="content-main">
<!-- error message -->
<div class="error-message "/>
<!-- content help -->
<div class="content-help"/>
<div class="clear-block">
<h3 class="style_sub_title"/>
<form id="rmls-manage-agent-listing" method="post" accept-charset="UTF-8" action="/manage-listing-agent/4756/7/Next">
<div>
<h3 class="style_sub_title">Tour Activity Status</h3>
<input id="edit-step" type="hidden" value="8" name="step"/>
<div class="container-inline-date form-item date-clear-block">
<div class="container-inline-date form-item date-clear-block">
<div class="form-submit-button">
<input id="form-nyo3QvZDdsqgPcIa0hMiityFWDw-jdMA6XuYvJU7aMU" type="hidden" value="form-nyo3QvZDdsqgPcIa0hMiityFWDw-jdMA6XuYvJU7aMU" name="form_build_id"/>
<input id="edit-rmls-manage-agent-listing-form-token" type="hidden" value="f18fc36d4d750ae3912d9cc941aa5c72" name="form_token"/>
<input id="edit-rmls-manage-agent-listing" type="hidden" value="rmls_manage_agent_listing" name="form_id"/>
<table class="sticky-header" style="position: fixed; top: 0px; width: 605px; left: 480px; visibility: hidden;">
<table class="statistic_table sticky-enabled sticky-table">
<div id="style_activity_text" class="style_sub_title_two">Premium Placements</div>
<div id="">
<form id="rmls-activity-report-placement-list-form" method="post" accept-charset="UTF-8" action="/manage-listing-agent/4756/7/Next">
<div>
<div class="placement_save">
<div class="placement_div">
<input id="edit-placement24798" type="hidden" value="24798" name="placement24798"/>
<img class="placement-images" src="/sites/default/files/imagecache/product_list/sites/all/themes/rmls_webtheme/stat-images/news-title1.jpg"/>
<div class="placement_txt_div">
<div id="placement_title-wrapper" class="form-item">
<div id="placement_link-wrapper" class="form-item">
<label for="placement_link">Link: </label>
<input id="placement_link" class="form-text" type="text" value="" size="60" name="link24798" maxlength="255"/>
</div>
</div>
<div class="placement_radio_div">
</div>
<div class="placement_div">
<input id="edit-placement24799" type="hidden" value="24799" name="placement24799"/>
<img class="placement-images" src="/sites/default/files/imagecache/product_list/sites/all/themes/rmls_webtheme/stat-images/news-title8.jpg"/>
<div class="placement_txt_div">
<div id="placement_title-wrapper" class="form-item">
<div id="placement_link-wrapper" class="form-item">
<label for="placement_link">Link: </label>
<input id="placement_link" class="form-text" type="text" value="" size="60" name="link24799" maxlength="255"/>
</div>
</div>
<div class="placement_radio_div">
</div>
<div class="placement_div">
<input id="edit-placement24800" type="hidden" value="24800" name="placement24800"/>
<img class="placement-images" src="/sites/default/files/imagecache/product_list/sites/all/themes/rmls_webtheme/stat-images/news-title2.jpg"/>
<div class="placement_txt_div">
<div id="placement_title-wrapper" class="form-item">
<div id="placement_link-wrapper" class="form-item">
<label for="placement_link">Link: </label>
<input id="placement_link" class="form-text" type="text" value="" size="60" name="link24800" maxlength="255"/>
</div>
</div>
<div class="placement_radio_div">
</div>
<div class="placement_div">
<input id="edit-placement24801" type="hidden" value="24801" name="placement24801"/>
<img class="placement-images" src="/sites/default/files/imagecache/product_list/sites/all/themes/rmls_webtheme/stat-images/news-title7.jpg"/>
<div class="placement_txt_div">
<div id="placement_title-wrapper" class="form-item">
<div id="placement_link-wrapper" class="form-item">
<label for="placement_link">Link: </label>
<input id="placement_link" class="form-text" type="text" value="" size="60" name="link24801" maxlength="255"/>
</div>
</div>
<div class="placement_radio_div">
</div>
<div class="placement_div">
<input id="edit-placement24802" type="hidden" value="24802" name="placement24802"/>
<img class="placement-images" src="/sites/default/files/imagecache/product_list/sites/all/themes/rmls_webtheme/stat-images/news-title3.jpg"/>
<div class="placement_txt_div">
<div id="placement_title-wrapper" class="form-item">
<div id="placement_link-wrapper" class="form-item">
<label for="placement_link">Link: </label>
<input id="placement_link" class="form-text" type="text" value="" size="60" name="link24802" maxlength="255"/>
</div>
</div>
<div class="placement_radio_div">
</div>
<div class="placement_div">
<input id="edit-placement24803" type="hidden" value="24803" name="placement24803"/>
<img class="placement-images" src="/sites/default/files/imagecache/product_list/sites/all/themes/rmls_webtheme/stat-images/news-title6.jpg"/>
<div class="placement_txt_div">
<div id="placement_title-wrapper" class="form-item">
<div id="placement_link-wrapper" class="form-item">
<label for="placement_link">Link: </label>
<input id="placement_link" class="form-text" type="text" value="" size="60" name="link24803" maxlength="255"/>
</div>
</div>
<div class="placement_radio_div">
</div>
<div class="placement_div">
<input id="edit-placement24804" type="hidden" value="24804" name="placement24804"/>
<img class="placement-images" src="/sites/default/files/imagecache/product_list/sites/all/themes/rmls_webtheme/stat-images/news-title4.jpg"/>
<div class="placement_txt_div">
<div id="placement_title-wrapper" class="form-item">
<div id="placement_link-wrapper" class="form-item">
<label for="placement_link">Link: </label>
<input id="placement_link" class="form-text" type="text" value="" size="60" name="link24804" maxlength="255"/>
</div>
</div>
<div class="placement_radio_div">
</div>
<div class="placement_div">
<input id="edit-placement24805" type="hidden" value="24805" name="placement24805"/>
<img class="placement-images" src="/sites/default/files/imagecache/product_list/sites/all/themes/rmls_webtheme/stat-images/news-title5.jpg"/>
<div class="placement_txt_div">
<div id="placement_title-wrapper" class="form-item">
<div id="placement_link-wrapper" class="form-item">
<label for="placement_link">Link: </label>
<input id="placement_link" class="form-text" type="text" value="" size="60" name="link24805" maxlength="255"/>
</div>
</div>
<div class="placement_radio_div">
</div>
<div class="placement_submit_div">
<input id="form-mLn9X6UrPnGLa0cYCdxkBN3crwQzf-Cw5zU0lnbVufU" type="hidden" value="form-mLn9X6UrPnGLa0cYCdxkBN3crwQzf-Cw5zU0lnbVufU" name="form_build_id"/>
<input id="edit-rmls-activity-report-placement-list-form-form-token" type="hidden" value="4305d09bc8205b6d0db44711023395c9" name="form_token"/>
<input id="edit-rmls-activity-report-placement-list-form" type="hidden" value="rmls_activity_report_placement_list_form" name="form_id"/>
</div>
</form>
</div>
<div class="style_sub_title_two">Custom Placements</div>
<a class="custom-placement-link" href="/%2523">Add New</a>
<div id="activity_report_placement_form_div" style="display:none;">
<form id="rmls-activity-report-placement-form" enctype="multipart/form-data" method="post" accept-charset="UTF-8" action="/manage-listing-agent/4756/7/Next">
<div>
<div id="placement_title-wrapper" class="form-item">
<div id="placement_link-wrapper" class="form-item">
<label for="placement_link">Link: </label>
<input id="placement_link" class="form-text" type="text" value="" size="60" name="placement_link" maxlength="255"/>
</div>
<div id="edit-thumb-wrapper" class="form-item">
<input id="edit-placement-listing-id" type="hidden" value="4756" name="placement_listing_id"/>
<input id="submit" class="form-submit bluebutton" type="submit" value="Save" name="submit"/>
<input id="form-mCvTeIxSSPEq5qAcjv0ROjiJVvl2JV0fVIoWj9tQ0a8" type="hidden" value="form-mCvTeIxSSPEq5qAcjv0ROjiJVvl2JV0fVIoWj9tQ0a8" name="form_build_id"/>
<input id="edit-rmls-activity-report-placement-form-form-token" type="hidden" value="185635f8c3122f16a07b5b626e7fc473" name="form_token"/>
<input id="edit-rmls-activity-report-placement-form" type="hidden" value="rmls_activity_report_placement_form" name="form_id"/>
</div>
</form>
</div>
<div id="">
</div>
</form>
<div id="dialog-manage-listing"/>
</div>
<!-- content main -->
<!-- right side bar -->
<!-- end right side bar -->
</div>
<!-- style_content_main_wrapper -->
</div>
<!-- center -->
<div class="clear"/>
<div id="footer">
</div>
<!--end page -->
</div>
<!--end page_wrapper -->
<div id="dialog"/>
<script type="text/javascript"> <!--//--><![CDATA[//><!-- var _gaq = _gaq || [];_gaq.push(["_setAccount", "UA-37131766-1"]);_gaq.push(["_trackPageview"]);(function() {var ga = document.createElement("script");ga.type = "text/javascript";ga.async = true;ga.src = ("https:" == document.location.protocol ? "https://ssl" : "http://www") + ".google-analytics.com/ga.js";var s = document.getElementsByTagName("script")[0];s.parentNode.insertBefore(ga, s);})(); //--><!]]> </script>
<script type="text/javascript"> <!--//--><![CDATA[//><!-- jQuery.extend(Drupal.settings, { "CToolsAJAX": { "scripts": { "/sites/all/modules/jquery_update/replace/jquery.min.js": true, "/misc/drupal.js": true, "/sites/all/modules/blockui/jquery.blockUI.js": true, "/sites/all/modules/blockui/blockui.js": true, "/sites/all/modules/block_edit/block_edit.js": true, "/sites/all/modules/google_analytics/googleanalytics.js": true, "/sites/all/modules/nice_menus/superfish/js/superfish.js": true, "/sites/all/modules/nice_menus/superfish/js/jquery.bgiframe.min.js": true, "/sites/all/modules/nice_menus/superfish/js/jquery.hoverIntent.minified.js": true, "/sites/all/modules/nice_menus/nice_menus.js": true, "/sites/all/modules/jquery_ui/jquery.ui/ui/minified/ui.core.min.js": true, "/sites/all/modules/jquery_ui/jquery.ui/ui/minified/ui.dialog.min.js": true, "/sites/all/modules/jquery_ui/jquery.ui/ui/minified/ui.draggable.min.js": true, "/sites/all/modules/jquery_ui/jquery.ui/ui/minified/ui.droppable.min.js": true, "/sites/all/modules/jquery_ui/jquery.ui/ui/minified/ui.sortable.min.js": true, "/sites/all/modules/rmls/js/rmls.js": true, "/sites/all/modules/rmls/jquery.confirm/jquery.confirm.js": true, "/sites/all/modules/rmls/clippy/jquery.clippy.js": true, "/sites/all/modules/jquery_ui/jquery.ui/ui/minified/ui.datepicker.min.js": true, "/sites/all/modules/date/date_popup/lib/jquery.timeentry.pack.js": true, "/sites/all/modules/date/date_popup/date_popup.js": true, "/misc/tableheader.js": true, "/sites/all/modules/jquery_update/replace/jquery.form.js": true, "/sites/all/modules/ctools/js/ajax-responder.js": true, "/sites/all/modules/jquery_ui/jquery.ui/ui/minified/ui.resizable.min.js": true, "/sites/all/modules/dialog/dialog.js": true, "/sites/all/modules/rmls_order_verification/custom.js": true, "/sites/all/modules/rmls_order_verification/modal-window.min.js": true }, "css": { "/modules/node/node.css": true, "/modules/system/defaults.css": true, "/modules/system/system.css": true, "/modules/system/system-menus.css": true, "/modules/user/user.css": true, "/sites/all/modules/block_edit/block_edit.css": true, "/sites/all/modules/cck/theme/content-module.css": true, "/sites/all/modules/ckeditor/ckeditor.css": true, "/sites/all/modules/ctools/css/ctools.css": true, "/sites/all/modules/date/date.css": true, "/sites/all/modules/date/date_popup/themes/datepicker.css": true, "/sites/all/modules/date/date_popup/themes/jquery.timeentry.css": true, "/sites/all/modules/filefield/filefield.css": true, "/sites/all/modules/nice_menus/nice_menus.css": true, "/sites/all/modules/nice_menus/nice_menus_default.css": true, "/sites/all/modules/rmls/jquery.confirm/jquery.confirm.css": true, "/sites/all/modules/jquery_ui/jquery.ui/themes/default/ui.all.css": true, "/sites/all/modules/jquery_ui/jquery.ui/themes/default/ui.datepicker.css": true, "/sites/all/modules/ubercart/uc_attribute/uc_attribute.css": true, "/sites/all/modules/ubercart/uc_order/uc_order.css": true, "/sites/all/modules/ubercart/uc_product/uc_product.css": true, "/sites/all/modules/ubercart/uc_store/uc_store.css": true, "/sites/all/modules/cck/modules/fieldgroup/fieldgroup.css": true, "/sites/all/modules/views/css/views.css": true, "/sites/all/themes/rmls_webtheme/rmls.css": true, "/sites/all/themes/rmls_webtheme/style.css": true, "/sites/all/themes/rmls_webtheme/grid.css": true, "/sites/all/themes/rmls_webtheme/order_verification.css": true, "/sites/all/modules/rmls_order_verification/modal-window.css": true } } }); //--><!]]> </script>
</div>
<!--end container -->
</div>
<!--end wrapper -->
<script type="text/javascript">window.NREUM||(NREUM={});NREUM.info={"beacon":"bam.nr-data.net","licenseKey":"61afc6e03f","applicationID":"10285903","transactionName":"ZwQAMUZYW0QAAkZaDF5OIwZAUFpZThNfXxBvDAMLVV5QaAAGV10Xbw0LFkBQW1A+B11BDm8WEARESVBF","queueTime":0,"applicationTime":8493,"atts":"S0MDRw5CSEo=","errorBeacon":"bam.nr-data.net","agent":""}</script>
</div>
</body>
</html>
</document>

【问题讨论】:

  • 请添加html。
  • @Guy:对不起,我对此完全陌生。从哪里可以得到 Html?
  • 你是怎么得到你使用的xpath的?
  • @Guy:右键单击该元素并选择“Inspect in FirePath”,从这里我得到了每个元素的 Xpath。 (在火狐中)
  • 你看到的xml结构就是html。在此处发布您要与之互动的部分

标签: java button xpath selenium-webdriver textfield


【解决方案1】:

尝试如下:

//i take string array for eight text field input value
String [] textToInput = {"first","second","Third","Fourth","Fifth","Sixth","Seventh","Eight"};

List<WebElement> elements =  driver.findElements(By.xpath(".//*[@id='placement_link']"));

System.out.println("size is "+elements.size());

for(int i = 0; i < elements.size(); i++){
        elements.get(i).sendKeys(textToInput[i]);
    }

你可以用同样的方法点击保存按钮。

【讨论】:

  • @Guy:现在为每个文本字段输入了值,但它在控制台中显示如下:线程“main”中的异常 java.lang.ArrayIndexOutOfBoundsException: 8 at Production.AdLinkComplete.main(AdLinkComplete .java:69) 。可能是什么问题?
  • @Guy:点击操作(保存按钮)我该怎么做。现在我不需要在这里传递任何值,比如 'textToInput' 。那么,如何在这里实现具有相同 xpath 的按钮的单击操作?
  • ArrayIndexOutOfBoundsException 表示您的数组大小有问题。您的字符串数组和/或元素数组大小不匹配。请通过调试检查大小和循环。
  • 对于保存按钮单击,使用保存按钮路径和内部循环获取元素,只需使用 elements.get(i).click()。无需输入任何文本,因为这是一个保存按钮。
  • 实际上第一个“保存”按钮的位置在 8 个文本字段下方,第二个“保存按钮”在输入其他详细信息后出现(在页面底部)。在这种情况下,我如何检测并单击它们? 'Button' html 中没有任何内容可以在 xpath 中区分它们(类/id/type/name/value 都没有)。
猜你喜欢
  • 1970-01-01
  • 2021-03-25
  • 2019-09-18
  • 2017-10-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-06
  • 2014-08-08
相关资源
最近更新 更多