Невозможно отправить_ключи к webelement, покрытому подсказкой - PullRequest
3 голосов
/ 11 июня 2019

Я пытаюсь заполнить цену для элемента ввода. Я пробовал много способов, но они потерпели неудачу, и я понял, что это может быть покрыто другим элементом. Когда я перемещаю курсор мыши к полю, он автоматически показывает подсказку. И я также вижу некоторые строки кода HTML в окне проверки.

Рисунок 1: мой экран, когда я не указываю мышью на это поле.

i

Рисунок 2: мой экран, когда я перемещаю курсор мыши к этому полю

i

А вот некоторые из моих попыток:

price=browserdriver.find_element_by_xpath("//*[@id='inputProductPrice']")
driver.execute_script('arguments[0].innerHTML = "100000";', price)

Результат: без ошибок ничего не делать

или

price=browserdriver.find_element_by_xpath("//*[@id='inputProductPrice']")
browserdriver.execute_script("$(arguments[0]).click();", price)
price.send_keys("10000")

или

price=WebDriverWait(browserdriver, 10).until(EC.element_to_be_clickable((By.XPATH,"//input[@id='inputProductPrice']")))
price.click()
price.send_keys("10000")

или

price=browserdriver.find_element_by_xpath("//*[@id='inputProductPrice']")
price.click()
price.send_keys("10000")

или

price=browserdriver.find_element_by_xpath("//*[@id='inputProductPrice']")
actions.move_to_element(price).click(price).perform()
price.send_keys("10000")

Я уверен, что XPath правильный, и этот элемент находится на экране, потому что я могу отправить_диски на аналогичное поле в этой строке (поле с именем "2" с синим полем выделения на рисунке 1).

HTML:

<div class="col-md-2">
                            <input type="text" class="form-control" placeholder="Nhập giá" id="inputProductPrice" title="" data-toggle="tooltip" data-original-title="(Trên 8.000 VNĐ)" data-bind="moneyMask: ProductPriceForAll">
                        </div>

Пожалуйста, помогите мне преодолеть это ограничение. Спасибо

Добавлены слова: некоторые поля над этим полем также имеют некоторую структуру всплывающей подсказки, но я могу легко и успешно заполнить некоторые из приведенных выше решений. Но я не знаю, почему это поле становится сильным ограничением. Например, это поле (синяя подсветка): picture 3

Ответы [ 2 ]

0 голосов
/ 11 июня 2019

Я не знаю, почему send_keys("100000") не работает. Однако, если вы используете JS executor, попробуйте обновить атрибут placeholder или value.

price=browserdriver.find_element_by_xpath("//*[@id='inputProductPrice']")
browserdriver.execute_script('arguments[0].placeholder = "100000";', price)

Или

price=browserdriver.find_element_by_xpath("//*[@id='inputProductPrice']")
browserdriver.execute_script('arguments[0].value = "100000";', price)
0 голосов
/ 11 июня 2019

Вы должны попробовать использовать ActionChains и move_to_element_with_offset:

action = ActionChains(browserdriver)
price = WebDriverWait(browserdriver, 10).until(EC.element_to_be_clickable((By.XPATH,"//input[@id='inputProductPrice']")))
action.move_to_element_with_offset(price, 5, 5)
action.click().perform()

Вы можете поиграть со смещением, чтобы найти область, которую можно нажимать ...

Надеюсь, это поможет вам!

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