Невозможно найти веб-элемент, элементы изменяются в зависимости от выделения поля - PullRequest
0 голосов
/ 09 мая 2019

Невозможно найти элемент, пробовал несколько способов, но не смог добраться до элемента

Изображение 1:

id="1_s_1_l_MTO_Transaction_Type" и Class="" (пусто) На рисунке выделенный HTML (Document_For) является следующим полем, и вы можете видеть добавляемый класс как class="edit-cell ui-state-highlight

enter image description here

Изображение 2:

На этом рисунке выделено нужное поле и id="1_s_1_l_MTO_Transaction_Type" и Class="edit-cell ui-state-highlight", добавлен новый HTML <input id="1_MTO_Transaction_Type"...........

enter image description here

Я попробовал следующее:

driver.findElement(By.id("1_s_1_l_MTO_Transaction_Type")).click();

driver.findElement(By.xpath(("//tr[starts-with(@class,'ui-widget-content') and @role='row']//td[id='1_s_1_l_MTO_Transaction_Type']"))).click();

driver.findElement(By.xpath(("//tr[@id='1']/td[id='1_s_1_l_MTO_Transaction_Type']"))).click();

Все вышеперечисленное дало мне Невозможно найти элемент

Изображение 3:

Больше HTML, чтобы выяснить, как найти элемент

Это будетбольшая помощь, поскольку у меня есть ряд элементов, чтобы найти таким же образом.

enter image description here

Ответы [ 2 ]

0 голосов
/ 10 мая 2019

Выберите тип транзакции, используя идентификатор и следуйте приведенному ниже коду.

// Select Transaction Type 
String Transaction_Type = ExcelUtils.getCellData(8, 2); 
driver.findElement(By.xpath(("//td[contains(@id,'Transaction_Type')]"))).click(); 
driver.findElement(By.id("s_1_2_47_0_icon")).click(); 
driver.findElement(By.xpath("//li[@class='ui-menu-item']/div[contains(text(), '" + Transaction_Type + "')]")).click();
0 голосов
/ 09 мая 2019

Сопоставьте столбец и щелкните по индексу (как я вижу, когда щелкается ячейка столбца, создается поле ввода, поэтому сначала нужно щелкнуть по нему)

Попробуйте это так (это C #, Java ниже):

List<IWebElement> TransactionTypeFields => driver.FindElements(By.CssSelector("td[id*='Transaction_type']"));

IWebElement TransactionTypeInput => driver.FindElement(By.CssSelector("td[id*='Transaction_type'] input"));

public void TypeInTransactionTypeCell(string value, int index)
{
    TransactionTypeFields[index].Click();
    TransactionTypeInput.SendKeys(value);
}

в Java, используя вашу логику, должно быть что-то вроде этого (могут быть некоторые синтаксические ошибки, так как я использую notepad ++):

public void TypeInTransactionTypeCell(string value, int index)
{
    driver.findElements(By.cssSelector("td[id*='Transaction_type']")).get(index).click();
    driver.findElement(By.cssSelector("td[id*='Transaction_type'] input")).sendKeys(value);
}

Дайте мне знать, если это работает!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...