我有一个下拉菜单,其中包含文本“我的菜单”。不幸的是,同一下拉菜单也用于文本“我的第二菜单”。我需要单击此“我的菜单”下拉菜单,它看起来像以下内容。
<?xml version="1.0" encoding="UTF-8"?>
<div class="c-composedDropdown u-display--flex u-align-items--center u-color--white u-cursor--pointer u-border-radius">
<div class="u-display--flex u-align-items--center">
<span class="flag-icon flag-icon-lg flag-icon-ie composedDropdown__subTitle__icon u-color--white" />
<div>
<div class="u-display--block u-display--flex u-align-items--center">
<span class="u-font-weight--bold u-margin-right--medium">My Menu</span>
<svg xmlns="http://www.w3.org/2000/svg" baseProfile="tiny" width="24" height="24" fill="currentColor" color="#37454D" viewBox="0 0 24 24" class="c-composedDropdown__arrow-icon u-color--blue-lighter">
<path fill="none" stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M9.5 7l5 5m-5 5l5-5" class="svg-color--primary" />
</svg>
</div>
<p class="c-composedDropdown__subTitle u-display--block">Sample</p>
</div>
</div>
此刻,我正在使用XPath捕获它,如下图所示。
//*[contains(@class, 'c-composedDropdown') and contains (.,'My Menu')]
每当我单独运行它时,此测试方案就可以通过。但是,当整个测试套件运行时,该测试会随机失败。在无头模式下运行时也是如此。我可以选择要单击的元素的方式吗?这对测试不会有帮助吗?任何建议将不胜感激。
答案 0 :(得分:0)
尝试关注Xpath,希望它能起作用。
//div[contains(@class,"c-composedDropdown")]//following-sibling::span[text()="My Menu"]
答案 1 :(得分:0)
要对文本为我的菜单的元素上的click()
,您需要诱导为element_to_be_clickable()
诱导 WebDriverWait ,您可以使用任一方法Locator Strategies:
cssSelector :
"div.c-composedDropdown span.u-font-weight--bold.u-margin-right--medium"
xpath :
"//div[contains(@class, 'c-composedDropdown')]//span[@class='u-font-weight--bold u-margin-right--medium' and text()='My Menu']"