簡體   English   中英

單擊帶有硒的列表項(python)

[英]Click on list item with selenium (python)

有一個帶有以下HTML代碼段的網站:

<li class="quest" data-questid="Battle_02" data-category="battle">
<img src="img/x.gif" alt="" class="reward">
<a href="#">Versteck bauen</a>
</li>

我要單擊此列表項。 帶有img的唯一列表項。 我找到帶有xpath的項目。 並嘗試點擊它們。 我嘗試使用“ li”令牌:

xpath = "//img[@class='reward']/parent::*"

使用img:

xpath = "//img[@class='reward']

並帶有“ a href”:

xpath = "//img[@class='reward']//following::*"

然后,我嘗試使用以下代碼單擊它:

click_me = self.browser.find_element_by_xpath(xpath)
click_me.click()

但我得到一個元素在點異常處不可點擊。

所以我嘗試了一個動作:

action = ActionChains(self.browser)
action.move_to_element(click_me).click().perform()

與:

action.move_to_element(click_me).move_by_offset(4,0).click().perform()

我對此沒有任何錯誤,但仍然無法正常工作。

編輯:使用chrome-driver 2.31。 切換到2.34解決了我的問題!

您能否通過在其間添加build()函數來進行嘗試,例如:

action.move_to_element(click_me).move_by_offset(4,0).click().build().perform()

build()函數用於將Actions類函數拼接在一起。

當您想單擊列表項時,您嘗試了以下方法:

  • xpath =“ // img [@ class ='reward'] / parent :: *” :它引用<img>標記的父代,可能不起作用。

  • xpath =“ // img [@ class ='reward'] :由於沒有任何onClick()事件,可能無法正常工作。

  • xpath =“ // img [@ class ='reward'] // following :: *” :將從<img>節點定位文檔中存在的所有節點。

您可以使用以下任一選項:

  • 使用link_text

     self.browser.find_element_by_link_text("Versteck bauen").click() 
  • 使用xpath

     self.browser.find_element_by_xpath("//li[@class='quest' and @data-category='battle']//a[contains(normalize-space(), 'Versteck bauen')]").click() 

注意:如果仍然面對Element不可點擊...例外, 請參考此討論

請更新問題以列出您使用的瀏覽器和瀏覽器版本,webdriver版本? chromdriver 2.33在單擊任何不在視口中的元素時遇到已知問題。 如果使用此版本,請使用2.34或heigher。 – ong

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM