工具提示无法将send_keys发送到webelement

时间:2019-06-11 11:35:09

标签: python selenium xpath

我尝试将价格填充到输入元素中。 我尝试了很多方法,但是它们都失败了,我意识到它可能会被另一个元素覆盖。 当我将鼠标指针移到该字段时,它会自动显示一个工具提示。而且我还看到检查框中出现了一些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是正确的,并且该元素在屏幕上,因为我可以将key发送到该行中的相似字段(图1中带有蓝色突出显示框的名为“ 2”的字段)。

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 :(得分:0)

您应该尝试使用ActionChainsmove_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()

您可以使用偏移量来查找可单击的区域...

希望这对您有帮助!

答案 1 :(得分:0)

我不知道为什么send_keys("100000")无法正常工作。但是,如果您使用的是JS执行器,请尝试更新placeholdervalue属性。

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)