2016-05-13 14 views
1

私はchromedriverの次の問題に直面しました。私はテキスト入力フィールドとテキサスを持っています。私は正常にフォローコードを取り除くにはどうすればいいですか?

input = driver.find_element_by_xpath('//input[@type="text"]') 
input.send_keys('test') 
textarea = driver.find_element_by_xpath('//textarea[not(@readonly)]') 
textarea.send_keys('test') 

で両方の要素にテキストを送信することができます。しかし、このコードを試してみた場合

text_fields = driver.find_elements_by_xpath('//*[input[@type="text"] or textarea[not(@readonly)]]') 
for field in text_fields: 
    field.send_keys('test') 

は私がselenium.common.exceptions.WebDriverException: Message: unknown error: cannot focus element

P.S.を取得しますテキストを送信する前にfield.click()を追加するか、ActionChainsを使用して問題を解決できませんでした。またlen(text_fields)リターン2ので、正しくXPath

答えて

0

と一致する両方の要素は、2番目の式がinputまたはtextareaの親要素を返します。あなたは、単一のXPathの両方を取得したい場合:

text_fields = driver.find_elements_by_xpath("//input[@type='text'] | //textarea[not(@readonly)]") 
for field in text_fields: 
    field.send_keys('test') 

またはCSSセレクタで:

text_fields = driver.find_elements_by_css_selector("input[type='text'] , textarea:not([readonly])") 
for field in text_fields: 
    field.send_keys('test') 
+0

を、それだそれ!どうもありがとう – Andersson

関連する問題