2017-10-09 33 views
1

我試圖點擊網頁中的一個圖標。這是我試圖單擊元素:如何通過蟒蛇硒動態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_css_selector('ze6402ef81ea54445aec5dab8790c781f').click() 

的問題是,該ID是動態的,每個會話。我試圖解決方法有沒有成功以下代碼:

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() 

於是,我試圖TAB通過send_keys和ActionChains元素 - 但最終通過快速地循環頁,而不是一次一個元素:

actions.send_keys(Keys.TAB) 

我想在發佈我的問題之前進行盡職調查。任何援助表示讚賞 - 謝謝。

+0

您可以更新與一對夫婦的ID的示例值的問題(例如, 'ze6402ef81ea54445aec5dab8790c781f')哪些產生? – DebanjanB

+0

#zfaf974d8e18d44cc9bfdd942643b200d,#z134860f30a964156aea8d63f98a10cee,#z978fad99632e4f44a54e67a3cae4c935 – MrGlass

+1

請張貼的鏈接頁面。我們需要更多周圍的HTML來給出答案。 – JeffC

回答

0

使用這些XPath:

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

此致是格式不正確。

+0

這裏是我剛剛進入代碼 - 在結果沒有改變:‘點擊()「browser.find_element_by_xpath(「//跨度[@類=’文字]」當我使用‘圖標’,而不是‘文本’。 ,它點擊頁面上的不同元素。 – MrGlass

+0

這意味着你有圖標的類名多跨元素。我不知道它是與文本相同。嘗試使用以下格式來選擇具有類值的第二個跨度:「(// span [@ class ='Text])[2]」 – JOberloh

+0

我輸入了以下內容:browser.find_element_by_xpath(「(// span [@class ='文本])[2]「)。我收到此錯誤:SyntaxError:該表達式不是一個合法的表達式。 – MrGlass

0

正如你所說,你沒有與下面的代碼行的一個問題:

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

但這裏唯一的問題是,id是動態的,所以我們可以使用class屬性構建一個獨特cssSelector或獨特xpath如下:

  • cssSelector

    driver.findElement(By.cssSelector("div.Button.ButtonIcon.IconOnly.DataSelector.NormalState")); 
    
  • xpath

    driver.findElement(By.xpath("//div[@class='Button ButtonIcon IconOnly DataSelector NormalState']"));