无法将文本传递到文本框

时间:2018-04-17 06:55:11

标签: python selenium

Follwing是HTML代码:

<div class="search-nav">
    <div class="field">
        <input id="search" type="text" class="input-data" 
                placeholder="Enter Claim or Payment Number..." 
                name="QuickSearch">
        </input>
    </div>
    <button class="search-button" data-ng-click="performSearch($event)"> 
    <i class="search icon"></i></button>
</div>

Python selenium代码:

WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//input[@class='field' and @id='search']"))).send_keys("12343545")

4 个答案:

答案 0 :(得分:1)

我认为那里有一个frame,你首先用swithc框架然后找到元素

//Switch to frame    
driver.switch_to.frame(driver.find_element_by_id("Id of your Frame")) 

waitElem = WebDriverWait(driver, 10)
element = waitElem .until(EC.element_to_be_clickable((By.ID, 'search'))) 

element.send_keys("323232")

请将您的框架定位器放在“框架的ID”

的位置

答案 1 :(得分:0)

您无法传递文字的原因是因为您正在寻找class = 'field'id = 'search'的元素。有了这个,你指的是2个不同的元素。 class = 'field'<div>id = 'search'<input>

您要做的是,仅将文本发送到输入。现在,如果您想将其发送到使用class = 'field'的div下的此特定输入,请尝试以下操作:

//div[@class='field']/input[@id='search']"))).send_keys("12343545")

或者,如果这是唯一具有id&#34;输入&#34;。

的输入字段
//input[@id='search' and @class='input-data']

答案 2 :(得分:0)

如果输入字段在iframe中,那么您必须将webdriver的控制权切换到该特定的iframe以执行其中的任何操作:

代码

driver.switch_to.frame(driver.find_element_by_id("payspan-health"))  
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.ID, 'search')))
driver.find_element_by_id('search').send_keys("12343545")

#To switch back to the main window, you can use
driver.switch_to.default_content()

答案 3 :(得分:0)

目前你的Xpath没有引用任何内容,因为没有这样的Web元素,你带有id和class。

'AND'只能在xpath中用于同一标记中的两个属性。 例如://输入[@ id ='搜索'和名称='快速搜索']

因此,请将您的xpath更新为:

//输入[@ id ='search']或 //输入[@ id ='搜索'AND @ name ='快速搜索']