无法使用selenium访问文本框

时间:2018-04-17 06:26:05

标签: javascript google-chrome selenium selenium-webdriver textfield

我正在尝试在网站的结帐页面填写表单,但我无法这样做。 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'.

我不完全确定问题所在。任何人都可以帮我解决这个问题吗?先谢谢你。

6 个答案:

答案 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');