2017-11-27 13 views
0

私は、次のコードをChromeで調べます。セレンはXPathボタンをクリック

<span id="button-1111-btnInnerEl" class="x-btn-inner x-btn-inner-center" unselectable="on" style="">New Email</span> 

"New Email"というラベルをクリックする必要がありますが、Selenium(私はPythonを使用しています)でどのように呼び出すべきですか?

def CreateMail(): 
    EmailButton="//*[contains(text(),'New Email')]" 
    driver.find_elements_by_xpath(EmailButton) // there is no method to enable click. 
+0

あなたはメソッド '.click()' 'driver.find_element_by_xpathのような(XPathの).click()' – user1767754

+0

driver.find_elements_by_xpath(EmailButton).click() はAttributeErrorてみました。 'リスト' オブジェクトはありませんがありますが属性 'クリック' –

+0

親コンテナをクリックしたほうがよいでしょう。すべての要素がクリック可能であるとは限りません。しかし、それを見ることなく、私は助けることができません。 – user1767754

答えて

1
driver.find_element_by_id("button-1111-btnInnerEl").click() 
+0

を使用してください。selenium.common.exceptions.ElementNotInteractableException:メッセージ: –

+0

htmlに基づいて動作するはずです。おそらくあなたはそれを相互作用可能にするために別の行動を取る必要があります。 – Amit

0

あなたの声明: "要素 _by_xpath(EmailButton)をdriver.find_"。クリックは要素のグループでは機能しません。単一の要素に対してのみ実行可能です。したがって、特異なファインダを使用します。このXPathはyou.Ifのために動作します

driver.find_**element**_by_id(EmailButton).click() 
0

ホープあなたは自分のクロームコンソール$x("//*[text()='New Email']")にこのテキストを貼り付けると、このXPathの

driver.find_elements_by_xpath("//span[text()='New Email']") 
2

を使用したどのように多くの要素をチェックChromeブラウザを使用してXPathを検証しますあなたが共有しているHTMLを1として、id属性が、私には、動的に見えるexecute_script

driver.execute_script("document.getElementById('button-1111-btnInnerEl').click()") 
0

を使用することができます。したがって、動的なxpathまたはcssを構築する必要があります。さらにfind_elementsの代わりにfind_elementを使用する必要がありますので、WebElementが返され、click()メソッドを呼び出すことができます。あなたが適切にノードを見れば最終的に、選択不可属性は次のように私たちはJavascriptExecutorの助けを取る上で:実際の要素を見つけるための別の方法がある

myElement = driver.find_element_by_xpath("//span[starts-with(@id, 'button-')][@class='x-btn-inner x-btn-inner-center']") 
driver.execute_script("arguments[0].click();", myElement); 
-1

が、あなたの場合にはIDがあり、

driver.find_element_by_id("button-1111-btnInnerEl").click() 
+0

これは[この回答](https://stackoverflow.com/a/47503601/501011)の正確な複製です –

+0

完全な重複 – Abhijeetk431

0

すべてのご協力いただきありがとうございます:その下の

検索ソリューションが存在する場合 はあなたがIDを好むことができます。最後に私は自分の質問に対する答えを見つけました。私はキーを見つける前に、waitステートメントを追加しなければなりませんでした。ページが読み込まれたときにキーが存在しないため、正しいキーを見つけるために少し待たなければなりませんでした。

def CreateMail(): 
try: 
    element = WebDriverWait(driver,10).until(EC.presence_of_element_located((By.ID, "button-1143-btnInnerEl"))) 
    driver.find_element_by_id("button-1143-btnInnerEl").click() 

except TimeoutException: 
    print ("Loading took too much time!") 
関連する問題