使用selenium定位并单击特定按钮

use*_*161 5 python selenium web-scraping

使用python和selenium我需要找到并单击网页上的特定按钮.在正常情况下,这可以通过命令完成

next = driver.find_element_by_css_selector(".next")
next.click()
Run Code Online (Sandbox Code Playgroud)

由于网页编码,在这种情况下不起作用.通向前一页的按钮和通向下一页的按钮共享相同的类名.因此,此代码仅在第一页和第二页之间来回传递

据我所知告诉两个按钮分开的唯一方法是,通向上一页的按钮位于其中

<li class="previous">
    #button
</li>
Run Code Online (Sandbox Code Playgroud)

而导致下一页的那个就在于

<li class="next">
    #button
</li>
Run Code Online (Sandbox Code Playgroud)

有没有选择selenium的方法选择并点击"下一个"li类中的按钮?

完整的按钮代码:

上一个按钮:

<li class="previous">
    <a class="next" rel="nofollow" onclick="qc.pA('nrForm', 'f76', 'QClickEvent', '1', 'f28'); return false;" href="">
        Previous
    </a>
</li>
Run Code Online (Sandbox Code Playgroud)

下一个按钮:

<li class="next">
    <a class="next" rel="nofollow" onclick="qc.pA('nrForm', 'f76', 'QClickEvent', '3', 'f28'); return false;" href="">
        Next
    </a>
</li>
Run Code Online (Sandbox Code Playgroud)

mch*_*rnc 3

我认为你应该使用 .find_element_by_xpath()。例如:

next = driver.find_element_by_xpath("//li[@class='next']/a")
prev = driver.find_element_by_xpath("//li[@class='previous']/a")
Run Code Online (Sandbox Code Playgroud)

或者:

next = driver.find_element_by_xpath("//a[text()='Next']")
prev = driver.find_element_by_xpath("//a[text()='Previous']")
Run Code Online (Sandbox Code Playgroud)

  • 我没有 selenium 经验,也没有多少 CSS 经验,但是我曾经看过一个关于 selenium 的演示,其中指出使用 CSS 通常比使用 xpath 更好。 (2认同)