Проблема с клиентом mgitsys
Подробнее здесь: MGitsys Bug
В качестве обходного пути я использую более старую версию: git version 1.7.4.rc1.3197.gbf965
У этого нет этой ошибки.
Я разместил эту конкретную сборку в своем сообществе SkyDrive папка, ссылка: http://sdrv.ms/MeuWTD
Надеюсь, она будет исправлена в ближайшем будущем.
Я думаю, вам стоит попробовать этот XPath
"//*[@class='menu-popup-items']"
, он поможет вам найти каждый элемент в вашем теге div
. И если вы ищете конкретный текст, то он поможет вам найти элемент во всплывающем меню
//*[contains(text(),'Mr.')]
Он найдет вашего мистера во всплывающем меню
Я объясню на моем примере
//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
и, оставив его как есть, отправить имя элемента, который вы должны выбрать, должно работать нормально
Прежде чем ответить на вопрос, я хотел бы отметить, что если вы сможете добавить идентификатор для каждого пункта меню, это сделает поиск более простым и более производительным.
В этом сценарии вы можете сделать:
WebElement result = driver.findElement(By.id("myId"));
Если вы не можете добавить идентификатор, вы можете сделать что-то вроде этого:
WebElement result = driver.findElements(By.className("menu-popup-item-text")).stream()
.filter(webElement -> webElement.getText().contains("Mr."))
.findFirst().get();