如何从menu-popup
中选择一个元素?
例如,我想选择先生。
这是站点代码:
<div class="menu-popup-items"><span class="menu-popup-item menu-popup-no-icon "><span class="menu-popup-item-icon"></span><span class="menu-popup-item-text">Not selected</span></span><span class="menu-popup-item menu-popup-no-icon "><span class="menu-popup-item-icon"></span><span class="menu-popup-item-text">**Mr.**</span></span><span class="menu-popup-item menu-popup-no-icon "><span class="menu-popup-item-icon"></span><span class="menu-popup-item-text">Mrs.</span></span><span class="menu-popup-item menu-popup-no-icon "><span class="menu-popup-item-icon"></span><span class="menu-popup-item-text">Ms.</span></span><span class="menu-popup-item menu-popup-no-icon "><span class="menu-popup-item-icon"></span><span class="menu-popup-item-text">Dr.</span></span></div>
答案 0 :(得分:1)
我认为您应该尝试使用此XPath
"//*[@class='menu-popup-items']"
它将帮助您将每个元素定位到div标签中
如果您要查找特定的文本,它将帮助您在弹出菜单中查找元素
//*[contains(text(),'Mr.')]
它将在菜单弹出窗口中找到您的先生
答案 1 :(得分:0)
在回答问题之前,我想指出的是,如果您可以为每个菜单项添加一个ID,它将使查找方式更轻松,更高效。
在这种情况下,您可以执行以下操作:
WebElement result = driver.findElement(By.id("myId"));
如果您无法添加ID,则可以执行以下操作:
WebElement result = driver.findElements(By.className("menu-popup-item-text")).stream()
.filter(webElement -> webElement.getText().contains("Mr."))
.findFirst().get();
答案 2 :(得分:0)
我将举例说明
//In Page Object File
public static WebElement idProof(WebDriver driver)
{
WebElement element=null;
WebDriverWait wait=new WebDriverWait(driver, 50);
element=wait.until(ExpectedConditions.elementToBeClickable(By.xpath("//div[@class='panel-body']//div[3]//div[2]//div[1]//a[1]//span[1]")));
return element;
}
` `//In Test File
WebElement idProof = Page1.idProof(driver);
idProof.click();
//In Test File
WebElement voterId = FarmerRegPage.idProofVoterId(driver, "Voter id");
voterId.click();
// In Page Object File
public static WebElement idProofVoterId(WebDriver driver, String idVal)
{
WebElement element=null;
WebDriverWait wait=new WebDriverWait(driver, 50);
element=wait.until(ExpectedConditions.elementToBeClickable(By.xpath("//li[contains(text(),'" + idVal +"')]")));
return element;
}
变量String idVal
是我在下拉列表中传递的值
HTML代码段:-<span>Select an Option</span>
我们有同样的情况,我想告诉你,您应该先单击下拉列表,然后在xpath span
中更改为li
,然后按原样发送名称。您必须选择的项目应该可以正常工作