Python 使用Selenium将键发送到HTML元素

Python 使用Selenium将键发送到HTML元素,python,selenium,automation,Python,Selenium,Automation,我正在使用Selenium用Python编写体育博彩的自动化脚本。Selenium无法单击或发送以下屏幕截图()中突出显示的特定HTML元素的键 以下是我尝试过的: from selenium import webdriver driver = webdriver.Chrome() driver.get("http://www.bet365.com") ### Some code here to navigate to a particular match driver.switch_to.fr

我正在使用Selenium用Python编写体育博彩的自动化脚本。Selenium无法单击或发送以下屏幕截图()中突出显示的特定HTML元素的键

以下是我尝试过的:

from selenium import webdriver
driver = webdriver.Chrome()
driver.get("http://www.bet365.com")
### Some code here to navigate to a particular match
driver.switch_to.frame(bet_driver.find_element_by_tag_name("iframe"))
elem = driver.find_element_by_class_name("bs-Stake")
elem.click()
elem.send_keys("100")
这将返回以下错误:

ElementNotInteractableException: Element <div class="bs-Stake"> is not reachable by keyboard
我得到一个错误:

NoSuchElementException: Unable to locate element: .stk bs-Stake_TextBox

如果您能使用Selenium中提供的任何方法导航到HTML元素、单击并向其发送键,我将不胜感激。

尽管CSS样式是继承的。。。类别名称不正确。css选择器中有三个独立的类,但元素示例只有一个


Selenium被设计成模仿一个人可以执行的相同动作。。。该错误表明该字段不可用于交互。。。。找出原因。

尝试使用
webdriver wait
发送键
,以便元素能够交互

from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

element = WebDriverWait(driver, 50).until(EC.visibility_of_element_located((CSS_SELECTOR, ".stk.bs-Stake_TextBox")))
element.send_keys("100")

谢谢,成功了(将CSS_选择器更改为“CSS选择器”)。你能简单解释一下代码在做什么以及为什么这样做吗?@AfBM因为显式等待是标准实践,所以我使用了等待元素的可见性。首先它将检查元素是否可见,然后它将向元素发送键。我观察到的另一个问题是,您使用的类名有空格,因此它将无法工作,并引发compoundClassException。这就是为什么我更喜欢使用CSS。在css空间中,将替换为“.”
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

element = WebDriverWait(driver, 50).until(EC.visibility_of_element_located((CSS_SELECTOR, ".stk.bs-Stake_TextBox")))
element.send_keys("100")