selenium - जावा के माध्यम से XPath और सेलेनियम वेबड्राइवर का उपयोग करके एसवीजी तत्वों पर क्लिक कैसे करें




svg selenium-webdriver (2)

मेरे पास कुछ आयत तत्वों के साथ एक SVG ऑब्जेक्ट है। geckodriver का उपयोग करते geckodriver , मैं मुख्य SVG ऑब्जेक्ट में से एक पर क्लिक करने की कोशिश कर रहा हूं। हालाँकि xpath-checker के साथ मैं उसी के लिए उचित xpath का पता लगाने में असमर्थ हूँ।

अब तक, मैं xpath तक के माध्यम से ड्रिलडाउन करने में सक्षम हूं:

id('avg_score_chart')/div/div[1]/*[local-name()='svg' and namespace-uri()='http://www.w3.org/2000/svg']

मेरा HTML कोड इस प्रकार है:

<div id="avg_score_chart" class="chart" style="height: 250px; color: black ! important; overflow: hidden; text-align: left;">
<div class="amcharts-main-div" style="position: relative;">
<div class="amcharts-chart-div" style="overflow: hidden; position: relative; text-align: left; width: 525px; height: 212px; padding: 0px;">
<svg version="1.1" style="position: absolute; width: 525px; height: 212px; top: 0.450012px; left: -0.5px;">
<desc>JavaScript chart by amCharts 3.17.1</desc>
<g>
<g>
<g>
<g>
<g>
<g>
<g transform="translate(60,52)">
<g transform="translate(96,41)">
<g transform="translate(96,123)">
<g transform="translate(96,123)">
<path cs="100,100" d="M0.5,0.5 L0.5,-81.5 L30.5,-81.5 L30.5,0.5 L0.5,0.5 Z" fill="rgb(242,244,28)" stroke="rgb(242,244,28)" fill-opacity="0.8" stroke-width="1" stroke-opacity="0.8">
</g>
<g transform="translate(318,123)">
<g transform="translate(318,123)">
<g transform="translate(318,123)">
</g>
</g>
<g>
<g>
<g>
<g>
<g>
<g>
<g>
<g>
<g>
<g>
<g>
</svg>

क्या कोई मेरी यह मदद कर सकता है?


कैसे के बारे में: //div[@id='avg_score_chart']//*[local-name()='svg']/*[*[local-name()='path']]

जहाँ आपको 'sv' के अंदर 'div' तत्व के साथ 'div' तत्व के साथ 'avg_score_chart' तत्व के साथ कोई तत्व मिलता है।

संपादित करें: एक कोड ब्लॉक में xpath रखा


XPath अनुसरण करने का प्रयास करें और मुझे बताएं कि क्या समस्या अभी भी बनी हुई है:

//div[@id="avg_score_chart"]//*[name()="svg"]

<g> तत्वों के लिए:

//div[@id="avg_score_chart"]//*[name()="svg"]/*[name()="g"]

अद्यतन करें

अंत में, यह लगभग सबसे अच्छा विकल्प होना चाहिए:

//div[@class="portlet light boxshadow"][contains(.,"Store Wise Performance")]/div//div[@class="amcharts-chart-div"]/*[name()="svg"]//*[name()="g"]/*[name()="path" and @fill="rgb(242,244,28)"]






amcharts