2016-07-19 3 views
1

Каждый раз, когда идентификатор запроса изменяется при выборе поля обновления в реальном времени.Невозможно найти элемент с помощью xpath для полей постоянного обновления

Am пытается получить идентификатор запроса через XPath

Это исходный код.

<form id="itemscreen334-33504-" class="itemscreen addMode v_334 ajaxForm form-initialized" method="POST" enctype="multipart/form-data" requestid="18310" style="visibility: visible; opacity: 1;"> 

Java код:

WebElement form = driver.findElement(By.xpath("//form[Class='itemscreen addMode v_334 ajaxForm form-initialized')]")); 
System.out.println("form-->" + form); 
String requestNo = form.getAttribute("requestid"); 
System.out.println("requestNo----------->" + requestNo); 

Селен Ошибка:

Exception in thread "main" org.openqa.selenium.InvalidSelectorException: The given selector //form[Class='itemscreen addMode v_334 ajaxForm form-initialized')] is either invalid or does not result in a WebElement. The following error occurred: InvalidSelectorError: Unable to locate an element with the xpath expression //form[Class='itemscreen addMode v_334 ajaxForm form-initialized')] because of the following error: [Exception... "The expression is not a legal expression." code: "12" nsresult: "0x805b0033 (SyntaxError)" location: ""]

Как я могу получить идентификатор запроса, используя XPath?

+0

Одна проблема в вашем XPath является то, что вы имеете 'форму [Class' вместо' форме [@ class', но вы лучше использовать селектор CSS, как в ответ ниже. Это более гибко. – JeffC

ответ

0

На самом деле вы обеспечиваете неправильный xpath, ваше выражение xpath это выглядит как cssSelector, попробуйте, как показано ниже: -

WebElement form = driver.findElement(By.cssSelector("form.itemscreen.addMode.v_334.ajaxForm.form-initialized")); 
String requestNo = form.getAttribute("requestid"); 
System.out.println("requestNo----------->" + requestNo); 

Или, если вы хотите использовать xpath попробовать, как показано ниже с правильной xpath: -

WebElement form = driver.findElement(By.xpath("//form[@class = 'itemscreen addMode v_334 ajaxForm form-initialized']")); 
String requestNo = form.getAttribute("requestid"); 
System.out.println("requestNo----------->" + requestNo); 

Примечание: Если вы хотите частичное совпадение с атрибутом class, вы должны использовать xpath в By.xpath("//form[contains(@class, 'itemscreen addMode')]") и cssSelector, как By.cssSelector("form.itemscreen.addMode")

+0

Я использовал этот селектор CSS для кнопки «Сохранить» By.cssSelector («Кнопка [тип =„Submit“] [имя-данные =„Сохранить“]») я смог найти его Почему его не работает для типа формы, когда мы даем в этом формате driver.findElement (By.cssSelector ("select [имя-данные = 'Тип организации']")); – Pradeeba

+0

Не для этого случая. Его образец один. , когда я пытался использовать его аналогичным образом, его не удалось найти. Это конкретный формат, который мы должны дать ему как «form.itemscreen.addMode.v_334.ajaxForm.form-initialized» ? – Pradeeba

+0

@Pradeeba Что вы хотите на самом деле ??? ваш вопрос заключается в получении атрибута 'requestid' из элемента' form' –

Смежные вопросы