我正在尝试将值插入位于网页中的文本框中。
文本框出现在网页的底部,并且该元素不在代码中。我应该检查两次,以查看Chrome中的表值(第一次它同时显示不同的/父HTML),这表明我们存在多个层次,需要深入研究。
我尝试插入如下所示的字符串。
driver.find_element_by_id("arid1005").send_keys("TESTING")
和
elem = driver.find_element_by_id("arid1005")
driver.execute_script('arguments[0].value = "TESTING";',elem)
我还尝试通过类名,CSS,Xpath 查找元素,但最终得到
selenium.common.exceptions.ElementNotInteractableException: Message: element not interactable
当我检查2次时,下表将突出显示。
<table class="SearchBarInput" width="100%">
<tbody>
<tr><td width="">
<textarea style="width:99%;height:21px;" class="sr" cols="" wrap="off" rows="1" id="arid1005"></textarea></td>
</tr>
</tbody>
</table>
有人可以对我在这里想念的东西有所了解吗?抱歉,是否已经有人问过这个问题,但到目前为止我找不到任何相关内容。
答案 0 :(得分:0)
所需元素的 id 属性看起来是动态的,因此对于元素上的click()
,您必须为element_to_be_clickable()
引入 WebDriverWait ,并且您可以使用以下任一解决方案:
使用CSS_SELECTOR
:
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "table.SearchBarInput>tbody>tr>td>textarea"))).send_keys("TESTING")
使用XPATH
:
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//table[@class='SearchBarInput']/tbody/tr/td/textarea"))).send_keys("TESTING")
注意:您必须添加以下导入:
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
参考:您可以在以下位置找到一些相关的讨论: