[英]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.