2015-08-27 14 views
5

Tôi đang cố gắng tìm Selenium tìm một phần tử dựa trên chuỗi có thể chứa trong văn bản của phần tử hoặc thuộc tính bất kỳ. thực hiện để nắm bắt tất cả điều này mà không cần phải sử dụng logic đa điều kiện HOẶC. Những gì tôi đang sử dụng ngay bây giờ mà làm việc được ...Selenium Tìm phần tử dựa trên chuỗi trong văn bản hoặc thuộc tính

driver.findElement(By.xpath("//*[contains(@title,'foobar') or contains(.,'foobar')]")); 

Và tôi muốn biết nếu có một cách để sử dụng một ký tự đại diện thay vì các thuộc tính cụ thể (@title) mà còn gói gọn văn bản tố như 2 một phần của điều kiện OR.

+0

Tôi không nghĩ như vậy, nhưng một cái gì đó có thể giúp bạn đi đến một câu trả lời dứt khoát hơn là [ở đây] (http://codebeautify.org/ Xpath-Tester). –

+0

Thậm chí còn có ít nhất một cách để ký tự đại diện chỉ là phần thuộc tính cụ thể (như chuyển @title thành bất kỳ thuộc tính nào) nhưng để lại văn bản()? – user2150250

+0

Bạn có thể cho chúng tôi biết tại sao bạn muốn làm điều này không? Bạn đang sử dụng cái này như thế nào? – JeffC

Trả lời

9

này sẽ cung cấp tất cả các yếu tố có chứa văn bản foobar

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

Nếu bạn muốn kết hợp chính xác,

driver.findElement(By.xpath("//*[text() = 'foobar']")); 

Hoặc bạn có thể thực thi Javascript sử dụng JQuery trong Selenium

này sẽ trả lại tất cả các yếu tố web có chứa văn bản từ cha mẹ đến đứa con cuối cùng, do đó tôi đang sử dụng công cụ chọn jquery :last để tận dụng tối đa nút có chứa văn bản này, nhưng điều này có thể không phải lúc nào cũng chính xác, nếu bạn có nhiều nút chứa cùng một văn bản.

(WebElement)((JavascriptExecutor)driver).executeScript("return $(\":contains('foobar'):last\").get(0);"); 

Nếu bạn muốn kết hợp chính xác cho ở trên, bạn cần phải chạy một bộ lọc trên các kết quả,

(WebElement)((JavascriptExecutor)driver).executeScript("return $(\":contains('foobar')\").filter(function() {" + 
    "return $(this).text().trim() === 'foobar'}).get(0);"); 

jQuery trả về một mảng các yếu tố, nếu bạn chỉ có một yếu tố web trên trang với văn bản cụ thể đó, bạn sẽ nhận được một mảng của một phần tử. Tôi đang làm .get(0) để lấy yếu tố đầu tiên đó của mảng và đưa nó vào một số WebElement

Hy vọng điều này sẽ hữu ích.

+0

Có vẻ như một trong hai trang đầu sẽ không bao gồm trường hợp thuộc tính như @title chứa chuỗi. – user2150250

+0

@ user2150250 khi bạn nói '@ title', nghĩa là tiêu đề của trang phải không? Thẻ '' bên trong '<head>'. Tôi đã thử nghiệm xpath cho trang này, '// * [text() = 'java - Selenium Tìm phần tử dựa trên chuỗi trong văn bản hoặc thuộc tính - Stack Overflow']' và nó đã cho webelement 'title'. Tôi không chắc chắn nếu tôi hiểu đúng, 2 dòng cuối cùng của câu hỏi của bạn là một chút không rõ ràng với tôi. – <span class="text-secondary"> <small> <a rel="noopener" target="_blank" href="https://stackoverflow.com/users/1392498/">LINGS</a></span> <span></span> </small> </span> </p> </div> </div> </div> <div itemprop="comment" class="post-comment"> <div class="row"> <div class="col-lg-1"><span class="text-secondary">+0</span></div> <div class="col-lg-11"> <p class="commenttext">Thực ra nó chỉ là thuộc tính 'title' của WebElement, trong trường hợp này là phần tử' button'. Nó không phải là tiêu đề trang. – <span class="text-secondary"> <small> <a rel="noopener" target="_blank" href="https://stackoverflow.com/users/2150250/">user2150250</a></span> <span></span> </small> </span> </p> </div> </div> </div> </div> </div> </article> <div> <script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script> <ins class="adsbygoogle" style="display:block" data-ad-client="ca-pub-6208739752673518" data-ad-slot="4319274062" data-ad-format="auto" data-full-width-responsive="true"></ins> <script> (adsbygoogle = window.adsbygoogle || []).push({}); </script> </div> <article class="board-top-1 padding-top-10"> <div class="post-col vote-info"> <span class="count">0<i class="fa fa-thumbs-up"></i></span> </div> <div class="post-offset"> <div class="answer fmt"> <p>này sẽ trở lại nguyên tố này với văn bản <code class="prettyprint-override">foobar</code></p> <pre><code class="prettyprint-override">driver.findElement(By.xpath("//*[text()='foobar']")) </code></pre> </div> <div class="post-info"> <div class="post-meta row"> <p class="text-secondary col-lg-6"> <span class="source"> <a rel="noopener" target="_blank" href="https://stackoverflow.com/q/32271968">Nguồn</a> </span> </p> <p class="text-secondary col-lg-6"> <span class="float-right date"> <span>2015-08-28 13:15:10</span> </p> <p class="col-12"></p> <p class="col-12"></p></div> </div> </div> </article> </div> <div class="clearfix"> </div> <div class="relative-box"> <div class="relative">Các vấn đề liên quan</div> <ul class="relative_list"> <li> 1. <a href="http://vi.voidcc.com/question/p-gwopbuky-bm.html" target="_blank" title="Tìm phần tử cụ thể dựa trên một thuộc tính"> Tìm phần tử cụ thể dựa trên một thuộc tính </a> </li> <li> 2. <a href="http://vi.voidcc.com/question/p-xqpsakvt-r.html" target="_blank" title="Chọn phần tử dựa trên văn bản"> Chọn phần tử dựa trên văn bản </a> </li> <li> 3. <a href="http://vi.voidcc.com/question/p-aenykjmj-bk.html" target="_blank" title="Trình quản trị trang web Selenium: cách tìm phần tử trong DOM dựa trên thuộc tính tùy chỉnh"> Trình quản trị trang web Selenium: cách tìm phần tử trong DOM dựa trên thuộc tính tùy chỉnh </a> </li> <li> 4. <a href="http://vi.voidcc.com/question/p-xydahehh-n.html" target="_blank" title="ElementTree XPath - Chọn phần tử dựa trên thuộc tính"> ElementTree XPath - Chọn phần tử dựa trên thuộc tính </a> </li> <li> 5. <a href="http://vi.voidcc.com/question/p-dkumnhuf-br.html" target="_blank" title="Lấy phần tử dựa trên chuỗi"> Lấy phần tử dựa trên chuỗi </a> </li> <li> 6. <a href="http://vi.voidcc.com/question/p-uqvrbzmk-bg.html" target="_blank" title="tìm phần tử theo thuộc tính css"> tìm phần tử theo thuộc tính css </a> </li> <li> 7. <a href="http://vi.voidcc.com/question/p-wnfcswia-ba.html" target="_blank" title="Tạo thuộc tính ViewBag dựa trên chuỗi"> Tạo thuộc tính ViewBag dựa trên chuỗi </a> </li> <li> 8. <a href="http://vi.voidcc.com/question/p-kzzymfzu-bd.html" target="_blank" title="văn bản giữ chỗ trong phần tử văn bản zend"> văn bản giữ chỗ trong phần tử văn bản zend </a> </li> <li> 9. <a href="http://vi.voidcc.com/question/p-qlrcyozt-n.html" target="_blank" title="Tìm phần tử trong xml bằng văn bản bên trong"> Tìm phần tử trong xml bằng văn bản bên trong </a> </li> <li> 10. <a href="http://vi.voidcc.com/question/p-wmgkiojv-be.html" target="_blank" title="Selenium: tìm phần tử "bên cạnh" phần tử khác"> Selenium: tìm phần tử "bên cạnh" phần tử khác </a> </li> <li> 11. <a href="http://vi.voidcc.com/question/p-danodrzx-bd.html" target="_blank" title="jQuery - Tìm phần tử với thuộc tính rel"> jQuery - Tìm phần tử với thuộc tính rel </a> </li> <li> 12. <a href="http://vi.voidcc.com/question/p-uqpobemf-bx.html" target="_blank" title="Tạo cây javascript dựa trên thuộc tính cha mẹ trong mảng các phần tử"> Tạo cây javascript dựa trên thuộc tính cha mẹ trong mảng các phần tử </a> </li> <li> 13. <a href="http://vi.voidcc.com/question/p-oxqefysl-w.html" target="_blank" title="Python Selenium: Tìm đối tượng thuộc tính sử dụng xpath"> Python Selenium: Tìm đối tượng thuộc tính sử dụng xpath </a> </li> <li> 14. <a href="http://vi.voidcc.com/question/p-sblqawqk-by.html" target="_blank" title="Cách nhận văn bản từ phần tử gốc và loại trừ văn bản khỏi trẻ em (C# Selenium)"> Cách nhận văn bản từ phần tử gốc và loại trừ văn bản khỏi trẻ em (C# Selenium) </a> </li> <li> 15. <a href="http://vi.voidcc.com/question/p-zfhjbifh-ba.html" target="_blank" title="Tốc độ phần tử văn bản SVG"> Tốc độ phần tử văn bản SVG </a> </li> <li> 16. <a href="http://vi.voidcc.com/question/p-funrueur-x.html" target="_blank" title="tìm các phần tử có vị trí: thuộc tính"> tìm các phần tử có vị trí: thuộc tính </a> </li> <li> 17. <a href="http://vi.voidcc.com/question/p-vnowonqs-bb.html" target="_blank" title="Thuộc tính struct khác nhau dựa trên 32bit hoặc 64bit"> Thuộc tính struct khác nhau dựa trên 32bit hoặc 64bit </a> </li> <li> 18. <a href="http://vi.voidcc.com/question/p-mhfccytm-bb.html" target="_blank" title="Cập nhật văn bản của một phần tử với XSLT dựa trên thông số"> Cập nhật văn bản của một phần tử với XSLT dựa trên thông số </a> </li> <li> 19. <a href="http://vi.voidcc.com/question/p-aulppcmj-v.html" target="_blank" title="Selenium - cách lấy phần tử và phần con của nó văn bản"> Selenium - cách lấy phần tử và phần con của nó văn bản </a> </li> <li> 20. <a href="http://vi.voidcc.com/question/p-ettvfmsk-b.html" target="_blank" title="SimpleXML lấy nội dung phần tử dựa trên giá trị thuộc tính"> SimpleXML lấy nội dung phần tử dựa trên giá trị thuộc tính </a> </li> <li> 21. <a href="http://vi.voidcc.com/question/p-zdceswyh-bd.html" target="_blank" title="Selenium: kiểm tra xem phần tử có chứa một số văn bản"> Selenium: kiểm tra xem phần tử có chứa một số văn bản </a> </li> <li> 22. <a href="http://vi.voidcc.com/question/p-ubeijyag-m.html" target="_blank" title="jquery v1.3.2 tìm phần tử theo thuộc tính"> jquery v1.3.2 tìm phần tử theo thuộc tính </a> </li> <li> 23. <a href="http://vi.voidcc.com/question/p-uweowcji-br.html" target="_blank" title="Căn chỉnh văn bản của văn bản lên trên cùng của phần tử khác (CSS)"> Căn chỉnh văn bản của văn bản lên trên cùng của phần tử khác (CSS) </a> </li> <li> 24. <a href="http://vi.voidcc.com/question/p-empkoqch-cb.html" target="_blank" title="Selenium WebDriver có được văn bản từ tài sản CSS "nội dung" trên :: trước phần tử giả"> Selenium WebDriver có được văn bản từ tài sản CSS "nội dung" trên :: trước phần tử giả </a> </li> <li> 25. <a href="http://vi.voidcc.com/question/p-agblwgeh-bx.html" target="_blank" title="thước đo: Tìm phần tử bởi Thuộc tính"> thước đo: Tìm phần tử bởi Thuộc tính </a> </li> <li> 26. <a href="http://vi.voidcc.com/question/p-gzapnizf-bd.html" target="_blank" title="Thêm văn bản vào trước hoặc sau phần tử HTML"> Thêm văn bản vào trước hoặc sau phần tử HTML </a> </li> <li> 27. <a href="http://vi.voidcc.com/question/p-uiincchc-g.html" target="_blank" title="Phần tử chuỗi C# XML có thuộc tính Tên"> Phần tử chuỗi C# XML có thuộc tính Tên </a> </li> <li> 28. <a href="http://vi.voidcc.com/question/p-nzhpgwva-u.html" target="_blank" title="Thuộc tính dựa trên Gradle"> Thuộc tính dựa trên Gradle </a> </li> <li> 29. <a href="http://vi.voidcc.com/question/p-torncvwv-bv.html" target="_blank" title="Chọn văn bản trong phần tử"> Chọn văn bản trong phần tử </a> </li> <li> 30. <a href="http://vi.voidcc.com/question/p-sbovgyrw-a.html" target="_blank" title="tìm các phần tử theo thuộc tính với lxml"> tìm các phần tử theo thuộc tính với lxml </a> </li> </ul> </div> <div> <script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script> <ins class="adsbygoogle" style="display:block" data-ad-format="autorelaxed" data-ad-client="ca-pub-6208739752673518" data-ad-slot="3534119089"></ins> <script> (adsbygoogle = window.adsbygoogle || []).push({}); </script> </div> <div class="padding-top-10"></div> </div> </div> <script type="text/javascript" src="http://img2.voidcc.com/voidso/script/side.js?t=1652515422912"></script> <script type="text/javascript" src="http://img2.voidcc.com/voidso/plugin/highlight/highlight.pack.js"></script> <link href="http://img2.voidcc.com/voidso/plugin/highlight/styles/docco.css" media="screen" rel="stylesheet" type="text/css" /> <script type="text/javascript"> $('pre').each(function(i, e) { hljs.highlightBlock(e, "<span class='indent'> </span>", false) }); </script> <div class="col-lg-3 col-md-4 col-sm-5"> <div id="rightTop"> <div class="row"> <script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script> <!-- VOIDCC问答侧边栏广告 --> <ins class="adsbygoogle" style="display:block" data-ad-client="ca-pub-6208739752673518" data-ad-slot="3862022848" data-ad-format="auto" data-full-width-responsive="true"></ins> <script> (adsbygoogle = window.adsbygoogle || []).push({}); </script> </div> <div class="row sidebar panel panel-default"> <div class="panel-heading font-bold"> Câu hỏi mới nhất </div> <div class="m-b-sm m-t-sm clearfix"> <ul class="side_article_list"> <li class="side_article_list_item"> 1. <a href="http://vi.voidcc.com/question/p-fzsyqsjz-bw.html" target="_blank" title="Thiết lập Crashlytics Firebase trên iOS?"> Thiết lập Crashlytics Firebase trên iOS? </a> </li> <li class="side_article_list_item"> 2. <a href="http://vi.voidcc.com/question/p-gmcxnwlj-br.html" target="_blank" title="Rails 5 ActionView :: Template :: Lỗi xảy ra trong controller # action: "giao dịch lồng nhau""> Rails 5 ActionView :: Template :: Lỗi xảy ra trong controller # action: "giao dịch lồng nhau" </a> </li> <li class="side_article_list_item"> 3. <a href="http://vi.voidcc.com/question/p-rzqmxcqe-bv.html" target="_blank" title="CustomPouchError"> CustomPouchError </a> </li> <li class="side_article_list_item"> 4. <a href="http://vi.voidcc.com/question/p-gbpwjwzq-cc.html" target="_blank" title="Blockchain có phải là một danh sách liên kết không?"> Blockchain có phải là một danh sách liên kết không? </a> </li> <li class="side_article_list_item"> 5. <a href="http://vi.voidcc.com/question/p-xslgawyd-bx.html" target="_blank" title="Làm thế nào để sử dụng một STL priority_queue + so sánh với một nhà xây dựng cụ thể?"> Làm thế nào để sử dụng một STL priority_queue + so sánh với một nhà xây dựng cụ thể? </a> </li> <li class="side_article_list_item"> 6. <a href="http://vi.voidcc.com/question/p-tnjrcdrk-br.html" target="_blank" title="Lặp lại trên unique_ptr không tham chiếu, có chứa vectơ, trong vòng lặp phạm vi"> Lặp lại trên unique_ptr không tham chiếu, có chứa vectơ, trong vòng lặp phạm vi </a> </li> <li class="side_article_list_item"> 7. <a href="http://vi.voidcc.com/question/p-msagugqj-bt.html" target="_blank" title="Cuộc gọi API proxy nhanh với cookie"> Cuộc gọi API proxy nhanh với cookie </a> </li> <li class="side_article_list_item"> 8. <a href="http://vi.voidcc.com/question/p-mpmnlilx-br.html" target="_blank" title="Làm thế nào để lặp qua một chức năng eval gọn gàng bằng cách sử dụng purrr?"> Làm thế nào để lặp qua một chức năng eval gọn gàng bằng cách sử dụng purrr? </a> </li> <li class="side_article_list_item"> 9. <a href="http://vi.voidcc.com/question/p-fxlmzqgi-cc.html" target="_blank" title="Chọn mười danh mục hàng đầu dựa trên một cột trong một bảng khác với hùng hồn"> Chọn mười danh mục hàng đầu dựa trên một cột trong một bảng khác với hùng hồn </a> </li> <li class="side_article_list_item"> 10. <a href="http://vi.voidcc.com/question/p-konklqgn-cb.html" target="_blank" title="Đang cố gắng nĩa một mô-đun nút ng2-smart-table"> Đang cố gắng nĩa một mô-đun nút ng2-smart-table </a> </li> </ul> </div> </div> </div> <p class="article-nav-bar"></p> <div class="row sidebar article-nav"> <div class="row box_white visible-sm visible-md visible-lg margin-zero"> <div class="top"> <h3 class="title"><i class="glyphicon glyphicon-th-list"></i> Các vấn đề liên quan</h3> </div> <div class="article-relative-content"> <ul class="side_article_list"> <li class="side_article_list_item"> 1. <a href="http://vi.voidcc.com/question/p-gwopbuky-bm.html" target="_blank" title="Tìm phần tử cụ thể dựa trên một thuộc tính"> Tìm phần tử cụ thể dựa trên một thuộc tính </a> </li> <li class="side_article_list_item"> 2. <a href="http://vi.voidcc.com/question/p-xqpsakvt-r.html" target="_blank" title="Chọn phần tử dựa trên văn bản"> Chọn phần tử dựa trên văn bản </a> </li> <li class="side_article_list_item"> 3. <a href="http://vi.voidcc.com/question/p-aenykjmj-bk.html" target="_blank" title="Trình quản trị trang web Selenium: cách tìm phần tử trong DOM dựa trên thuộc tính tùy chỉnh"> Trình quản trị trang web Selenium: cách tìm phần tử trong DOM dựa trên thuộc tính tùy chỉnh </a> </li> <li class="side_article_list_item"> 4. <a href="http://vi.voidcc.com/question/p-xydahehh-n.html" target="_blank" title="ElementTree XPath - Chọn phần tử dựa trên thuộc tính"> ElementTree XPath - Chọn phần tử dựa trên thuộc tính </a> </li> <li class="side_article_list_item"> 5. <a href="http://vi.voidcc.com/question/p-dkumnhuf-br.html" target="_blank" title="Lấy phần tử dựa trên chuỗi"> Lấy phần tử dựa trên chuỗi </a> </li> <li class="side_article_list_item"> 6. <a href="http://vi.voidcc.com/question/p-uqvrbzmk-bg.html" target="_blank" title="tìm phần tử theo thuộc tính css"> tìm phần tử theo thuộc tính css </a> </li> <li class="side_article_list_item"> 7. <a href="http://vi.voidcc.com/question/p-wnfcswia-ba.html" target="_blank" title="Tạo thuộc tính ViewBag dựa trên chuỗi"> Tạo thuộc tính ViewBag dựa trên chuỗi </a> </li> <li class="side_article_list_item"> 8. <a href="http://vi.voidcc.com/question/p-kzzymfzu-bd.html" target="_blank" title="văn bản giữ chỗ trong phần tử văn bản zend"> văn bản giữ chỗ trong phần tử văn bản zend </a> </li> <li class="side_article_list_item"> 9. <a href="http://vi.voidcc.com/question/p-qlrcyozt-n.html" target="_blank" title="Tìm phần tử trong xml bằng văn bản bên trong"> Tìm phần tử trong xml bằng văn bản bên trong </a> </li> <li class="side_article_list_item"> 10. <a href="http://vi.voidcc.com/question/p-wmgkiojv-be.html" target="_blank" title="Selenium: tìm phần tử "bên cạnh" phần tử khác"> Selenium: tìm phần tử "bên cạnh" phần tử khác </a> </li> </ul> </div> </div> </div> </div> </div> </div> </div><!-- wrap end--> <!-- footer --> <footer id="footer"> <div class="bg-simple lt"> <div class="container"> <div class="row padder-v m-t"> <div class="col-xs-8"> <ul class="list-inline"> <li><a href="http://vi.voidcc.com/contact">Liên lạc với chúng tôi</a></li> <li>© 2020 VI.VOIDCC.COM</li> <li><a rel="nofollow" href="https://beian.miit.gov.cn/" target="_blank">沪ICP备13005482号-13</a></li> <li><script type="text/javascript" src="https://s9.cnzz.com/z_stat.php?id=1280098168&web_id=1280098168"></script></li> <li><a href="http://cn.voidcc.com/" target="_blank" title="程序问答园区">简体中文</a></li> <li><a href="http://hk.voidcc.com/" target="_blank" title="程序問答園區">繁體中文</a></li> <li><a href="http://ru.voidcc.com/" target="_blank" title="поле вопросов и ответов">Русский</a></li> <li><a href="http://de.voidcc.com/" target="_blank" title="Frage - und - antwort - Park">Deutsch</a></li> <li><a href="http://es.voidcc.com/" target="_blank" title="Preguntas y respuestas">Español</a></li> <li><a href="http://hi.voidcc.com/" target="_blank" title="कार्यक्रम प्रश्न और उत्तर पार्क">हिन्दी</a></li> <li><a href="http://it.voidcc.com/" target="_blank" title="IL Programma di chiedere Park">Italiano</a></li> <li><a href="http://ja.voidcc.com/" target="_blank" title="プログラム問答園区">日本語</a></li> <li><a href="http://ko.voidcc.com/" target="_blank" title="프로그램 문답 단지">한국어</a></li> <li><a href="http://pl.voidcc.com/" target="_blank" title="program o park">Polski</a></li> <li><a href="http://tr.voidcc.com/" target="_blank" title="Program soru ve cevap parkı">Türkçe</a></li> <li><a href="http://vi.voidcc.com/" target="_blank" title="Đáp ứng viên">Tiếng Việt</a></li> <li><a href="http://fr.voidcc.com/" target="_blank" title="Programme interrogation Park">Française</a></li> </ul> </div> </div> </div> </div> </div> </footer> <!-- / footer --> <script async src="https://www.googletagmanager.com/gtag/js?id=UA-77509369-5"></script> <script> window.dataLayer = window.dataLayer || []; function gtag() { dataLayer.push(arguments); } gtag('js', new Date()); gtag('config', 'UA-77509369-5'); </script> <script> var _hmt = _hmt || []; (function () { var hm = document.createElement("script"); hm.src = "https://hm.baidu.com/hm.js?67d4731349f0b00136755b80364ce381"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(hm, s); })(); </script> </body> </html>