在Selenium Python中使用ActionChains获取属性
我们正在使用SeleniumPytest编写自动化脚本,并试图在文本框中获取值。文本框在元素内有一个标签(用作定位器)。但是,在第二个div中有另一个,输入在第二个div中(其中包含实际值。没有内置的唯一定位器可用,因此我使用了下面的定位器。请注意,实际页面有10个类似的文本框,具有与此处所述相同的HTML,但仅文本框名称不同在Selenium Python中使用ActionChains获取属性,python,selenium,selenium-webdriver,automation,pytest,Python,Selenium,Selenium Webdriver,Automation,Pytest,我们正在使用SeleniumPytest编写自动化脚本,并试图在文本框中获取值。文本框在元素内有一个标签(用作定位器)。但是,在第二个div中有另一个,输入在第二个div中(其中包含实际值。没有内置的唯一定位器可用,因此我使用了下面的定位器。请注意,实际页面有10个类似的文本框,具有与此处所述相同的HTML,但仅文本框名称不同 "//label[contains(., 'Textbox')]" 现在我必须单击并键入文本框,正常的selenium click方法返回Eleme
"//label[contains(., 'Textbox')]"
现在我必须单击并键入文本框,正常的selenium click方法返回ElementClickInterceptedException,因此我必须使用ActionChains。
ActionChains(驱动程序)。将\u移动到\u元素(驱动程序。通过\u xpath(元素)查找\u元素)。单击()。发送\u键(“示例”)。执行()
现在的问题是,我必须获取文本框中数据的值
driver.find_element_by_xpath(element).get_attribute('value')
但它没有按预期工作,并返回了相同的ElementNotInteractivatableException。请建议我是否可以使用任何其他方法获取输入中值的属性。我已经尝试了以下方法,但运气不佳,因为它返回了Nonetype
driver.find_element_by_xpath(element).text
我也尝试过使用所有其他定位器组合,但只发现上面提到的一个有效。请建议是否有任何方法可以使用ActionChains本身获取属性值
编辑#
您正试图将密钥发送到无法交互的标签标记。您必须与输入标记交互。有两种方法: 1.使用开关切换到活动元件:
locator= "//label[contains(., 'Textbox')]"
textbox = driver.find_element_by_xpath(locator)
textbox.click()
inputElement = driver.switch_to.active_element
inputElement.send_keys("HIHIHIHIHI")
print(inputElement.get_attribute('value'))
print(textbox.text)
inputElement = driver.find_element_by_xpath("//label[contains(., 'Textbox')]/..//input")
inputElement.send_keys("HIHIHIHIHI")
print(inputElement.get_attribute('value'))
2.直接使用输入元素:
locator= "//label[contains(., 'Textbox')]"
textbox = driver.find_element_by_xpath(locator)
textbox.click()
inputElement = driver.switch_to.active_element
inputElement.send_keys("HIHIHIHIHI")
print(inputElement.get_attribute('value'))
print(textbox.text)
inputElement = driver.find_element_by_xpath("//label[contains(., 'Textbox')]/..//input")
inputElement.send_keys("HIHIHIHIHI")
print(inputElement.get_attribute('value'))
输出:
locator= "//label[contains(., 'Textbox')]"
textbox = driver.find_element_by_xpath(locator)
textbox.click()
inputElement = driver.switch_to.active_element
inputElement.send_keys("HIHIHIHIHI")
print(inputElement.get_attribute('value'))
print(textbox.text)
inputElement = driver.find_element_by_xpath("//label[contains(., 'Textbox')]/..//input")
inputElement.send_keys("HIHIHIHIHI")
print(inputElement.get_attribute('value'))
请添加您试图使用的元素的HTML
。获取属性(“值”)
on。或者只共享页面的URL,这会使您的工作更轻松helpers@Jortega根据建议在上面添加了HTML您可以在每个HTML行或smth中添加新行吗?这很难阅读。请查看HTML..textbox中的以下部分。那么问题中添加的HTML是什么?它包含在问题的HTML中还有@PDHide。请仔细阅读HTML。我直接从问题FWIW中的HTML复制了评论中的HTML片段。命名标签变量textbox有点混乱,因为它实际上是标签。