2017-10-09 2 views
1

ウェブページのアイコンをクリックしようとしています。どのように私はPythonのセレンを介して動的IDと対話するのですか?

browser.find_element_by_css_selector('ze6402ef81ea54445aec5dab8790c781f').click() 

問題は、idは、各セッションで動的であるということです。私は以下のコードとの相互作用問題がない

<a class="Button ButtonIcon IconOnly DataSelector NormalState" 
id="ze6402ef81ea54445aec5dab8790c781f" tabindex="0"><span class="Icon"></span> 
<span class="Text"></span></a> 

:これは私がクリックしようとしてい要素です。ノー成功を次のコードでの回避策を試みた:

browser.find_element_by_xpath("//a[span/@class='Text']").click() 

browser.find_element_by_xpath("//a[span/@class='Icon']").click() 

その後、私は要素がクリックされるためにホバー状態にあることが必要であることに気づきました。だから、次回、私はホバー状態をシミュレートしようとするActionChainsを使用 - 再び、成功しません:

actions=ActionChains(browser) 
element=browser.find_element_by_css_selector("//a[span/@class='Icon']") 
actions.move_to_element(element).click().perform() 

その後、私はsend_keysとActionChainsを経由して要素にTABしようとした - しかし、それはを通して急速に循環してしまいましたページ、一度に代わりの一つの要素:私は私の問題を投稿する前に私のデューデリジェンスに入れたかった

actions.send_keys(Keys.TAB) 

。どんな援助も感謝しています - ありがとう。

+0

あなたがIDSの例値のカップル(たとえばで質問を更新することができます'ze6402ef81ea54445aec5dab8790c781f')が生成されますか? – DebanjanB

+0

#zfaf974d8e18d44cc9bfdd942643b200d、#z134860f30a964156aea8d63f98a10cee、#z978fad99632e4f44a54e67a3cae4c935 – MrGlass

+1

このページへのリンクを投稿してください。答えを出すには、周囲のHTMLをもっと必要とします。 – JeffC

答えて

0

は、これらのXPathを使用します。

//span[@class='Text'] 
//span[@class='Icon'] 

ユアーズは、正しくフォーマットされました。

+0

私は今入力したコードです - 結果に変更はありません: 'browser.find_element_by_xpath( "// span [@ class =' Text ']。click()' 'Text'の代わりに 'Icon' – MrGlass

+0

これは、クラス名がIconの複数のspan要素があることを意味しています。テキストと同じであるかどうかは疑問です。"(// span [@ class = 'Text])" – JOberloh

+0

次のように入力してください:browser.find_element_by_xpath( "(// span [@class = 'テキスト])[2]」)。私はこのエラーを受け取りました:SyntaxError:式は正当な式ではありません。 – MrGlass

0

あなたが述べたように、次のコード行に問題はありません。

browser.find_element_by_css_selector('ze6402ef81ea54445aec5dab8790c781f').click() 

をしかし、ここでの唯一の問題は、idが動的であるということですので、我々が構築するためにclass属性を使用することができます

  • cssSelectorを:

    0次のようにユニークなcssSelectorまたはユニーク
    driver.findElement(By.cssSelector("div.Button.ButtonIcon.IconOnly.DataSelector.NormalState")); 
    
  • xpath

    driver.findElement(By.xpath("//div[@class='Button ButtonIcon IconOnly DataSelector NormalState']")); 
    
関連する問題