我只是想通过使用python来玩网上游戏来学习python。我遇到的一件事是,在某些网站上,他们可能有一个隐藏的按钮。
例如,在Reddit上,如果您转到自己的帐户页面,并希望删除帐户页面上的第一个/热门评论,则可以轻松找到删除。唯一的问题是按下隐藏按钮“是”'。
问题在于某些帖子可以更改某些设置,例如禁用收件箱回复,删除等,并且并非所有帖子都具有这些相同的功能/按钮。
它们都具有相同的' a.yes
'的CSS选择器,因此,即使您使用driver.find_elements获得所有元素,也无法始终获得该按钮,因为其他按钮,如删除和禁用收件箱回复等。由于一个页面可能是elem[0] = delete.yes, elem[1] = disable inbox.yes
而另一个页面可能是elem[0]~elem[4] = delete.yes
标签的不同之处在于:
删除按钮
<a href="javascript:void(0)" class="yes" onclick="change_state(this, "del", hide_thing, undefined, null)">yes</a>
禁用收件箱回复
<a href="javascript:void(0)" class="yes" onclick="change_state(this, "sendreplies", null, undefined, null)">yes</a>
目前这就是我所拥有的,但由于所提到的内容,第3行不会起作用。
elem = driver.find_element_by_link_text('delete')
elem.click()
#elem = driver.find_elements_by_css_selector('a.yes')
#elem[i].click()
有谁知道如何解决这个问题?
答案 0 :(得分:1)
使用XPath转到父级,然后转到下一个兄弟:
confirm = driver.find_element_by_xpath('(//a[contains(text(), "delete")])[1]/../following-sibling::*')
要打破它:
(//a[contains(text(), "delete")])[1]
- 找到第一个<a>
标记,其中包含“删除”。将1改为2将找到第二个,第三个改为3,依此类推。/..
- 转到父级,这是<span>
代码,但无关紧要/following-sibling::*
- 转到下一个兄弟(此处的标签名称不相关)然后:
confirm.find_element_by_link_text('yes').click() # To click yes
# confirm.find_element_by_link_text('no').click() to click no instead