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")
答案 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 ='快速搜索']