无法使用python selenium在文本框中键入

2024-04-19 21:30:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试使用python selenium将键发送到以下textarea html:

<div class="spk-c spH-d"><div id="gwt-uid-23" class="sppb-a">
<div class="sppb-b spk-b">For example, flowers or used cars</div>
<textarea rows="2" aria-labelledby="gwt-uid-64 gwt-uid-23" id="gwt-debug-keywords-text-area" class="spk-a sppb-c">
</textarea>
</div> 
<div role="alert" class="error" style="display:none"> Input contains a keyword that is too long. </div> <div class="error" style="display:none">Your product or service description can't exceed 1,000 words. Remove some words and try again.
</div>
</div>

我得到一个错误:

^{pr2}$

这是我的代码:

textarea='textarea[id="gwt-debug-keywords-text-area"]'
element = WebDriverWait(driver, 15).until(lambda driver : driver.find_element_by_css_selector(textarea))
driver.find_element_by_css_selector(textarea).send_keys('plumbers')

你能帮帮我吗?我有一段时间很烦。html来自google关键字规划器。 谢谢你


Tags: ortextdebugdividuidhtmldriver
3条回答

问题可能不在于您的selenium代码,而在于使用该工具的工作流。我不熟悉这个adwords关键字规划器,但当我在Google上搜索文本区域和selenium的id时,我遇到了一些github code它似乎首先启用了文本区域:

browser.find_element_by_id("gwt-debug-splash-panel-find-keywords-selection-input").click()
browser.find_element_by_xpath("//textarea[@id='gwt-debug-keywords-text-area']").send_keys(keyword)

可以使用预期的条件等待文本框的可见性

WebDriverWait(driver, 15).until(expected_conditions.visibility_of_element_located((By.ID, 'gwt-debug-keywords-text-area'))).send_keys('plumbers')

Edit

您需要切换到带有textarea的iframe,以便与之交互

^{pr2}$

然后切换回去

driver.switch_to.default_content()

在发送文本之前,请尝试使用JS代码使元素可见:

driver.execute_script("document.getElementById('gwt-debug-keywords-text-area').style.visibility = 'visible';")
driver.execute_script("document.getElementById('gwt-debug-keywords-text-area').style.display='bloc‌​k';")

如果有任何异常,请告诉我

更新

如果要使用JS将文本发送到文本区域,则可能需要执行以下操作:

^{pr2}$

或者

driver.execute_script("document.getElementById('gwt-debug-keywords-text-area').value='Here is some text';")

相关问题 更多 >