我正在使用Selenium并测试新东西,我尝试制作一个程序点击Yt上的Like按钮,但XPath是错误的,我不知道如何让XPath正确,任何人都可以告诉我获取元素的“真实”Xpath的方法?
chrome.FindElementByXPath("//*[@id='button']").Click();
使用此XPath有多个按钮,这是肯定的,但我想知道如何指定我想要的按钮。
<yt-icon-button id="button" class="style-scope ytd-toggle-button-renderer style-text" aria-pressed="false"><button id="button" class="style-scope yt-icon-button" aria-label="Ich mag das Video (wie 8.019 andere auch)"><yt-icon class="style-scope ytd-toggle-button-renderer"><svg viewBox="0 0 24 24" preserveAspectRatio="xMidYMid meet" focusable="false" class="style-scope yt-icon" style="pointer-events: none; display: block; width: 100%; height: 100%;"><g class="style-scope yt-icon">
<path d="M1 21h4V9H1v12zm22-11c0-1.1-.9-2-2-2h-6.31l.95-4.57.03-.32c0-.41-.17-.79-.44-1.06L14.17 1 7.59 7.59C7.22 7.95 7 8.45 7 9v10c0 1.1.9 2 2 2h9c.83 0 1.54-.5 1.84-1.22l3.02-7.05c.09-.23.14-.47.14-.73v-1.91l-.01-.01L23 10z" class="style-scope yt-icon"></path>
</g></svg>
</yt-icon></button></yt-icon-button>
答案 0 :(得分:2)
//*[@id="button"]
使用此XPath的按钮不止一个,这是肯定的,但我想知道如何指定我想要的按钮。
有很多方法可以使上述XPath更具选择性。哪种方法效果最好取决于你的目标标记,你已经忽略了它给我们看。
以下是一些增加XPath特异性的一般性想法:
/full/path/to/element[@id="button"]
//*[@id="button" and @class="UniqueClassName"]
//*[@id="button"][2]
//*[@id="button" and preceding-sibling::span="Age:"]