我正在尝试在网站的结帐页面填写表单,但我无法这样做。 input元素如下所示:
<input first_and_last="true" placeholder="name" class="string required"
type="text" name="order[billing_name]" id="order_billing_name">
目前,我正在尝试使用以下代码输入框:
driver.find_element_by_name('order[billing_name]').send_keys('hello')
但是,运行程序时出现此错误:
selenium.common.exceptions.WebDriverException: Message: unknown error:
Failed to execute 'getComputedStyle' on 'Window': parameter 1 is not of type 'Element'.
我不完全确定问题所在。任何人都可以帮我解决这个问题吗?先谢谢你。
答案 0 :(得分:0)
尝试使用id:
driver.find_element_by_id("order_billing_name")
答案 1 :(得分:0)
根据您共享的HTML将一些文本发送到<input>
元素,您可以使用以下代码行:
css_selector
:
driver.find_element_by_css_selector("input.string.required#order_billing_name").send_keys("hello")
xpath
:
driver.find_element_by_xpath("//input[@class='string required' and @id='order_billing_name']").send_keys("hello")
答案 2 :(得分:0)
您可以尝试以下方法之一:
ID:
driver.find_element_by_id('order_billing_name').send_keys('hello')
通过 cssSelctor
driver.find_element_by_css_selector('input[class='string required']').send_keys('hello')
尝试其中任何一个,让我知道状态。
答案 3 :(得分:0)
我认为这是因为您的数组中有多个名称为"order[billing_name]"
或相同billing_names
的元素,因此selenium找不到目标元素,尝试使用属性访问元素独特的,我认为id
是不错的选择:driver.find_element_by_id("order_billing_name")
答案 4 :(得分:0)
我认为你必须明确等待
waitElem = WebDriverWait(driver, 10)
element = waitElem .until(EC.element_to_be_clickable((By.ID, 'order_billing_name')))
element.send_keys("XXXXX")
答案 5 :(得分:0)
你可以试试。
new WebDriverWait(driver, 2000).until(ExpectedConditions.element_to_be_clickable((By.ID, 'order_billing_name')));
driver.find_element_by_id('order_billing_name').send_keys('hello');