启用硒python

时间:2018-07-31 09:14:25

标签: python html selenium selenium-webdriver

启用后,我正在尝试查找并单击按钮。该网站是世界关税组织有关进出口费用的数据。地址是

http://tariffdata.wto.org/ReportersAndProducts.aspx

一旦选择了“ Reporter”和“ Product”元素,则启用了右上角的“ Next”按钮。

我可以使用硒和python这样选择所有的报告基因和产品:

from selenium import webdriver
from selenium.webdriver.common.keys import Keys

driver = webdriver.Chrome("C:/Users/lopez/Downloads/chromedriver.exe")
driver.get("http://tariffdata.wto.org/ReportersAndProducts.aspx")
driver.find_element_by_css_selector('td.common_link:nth-child(2) > a:nth-child(1) > b:nth-child(1)').click()
driver.find_element_by_css_selector('td.common_link:nth-child(4) > a:nth-child(1) > b:nth-child(1)').click()

但是我找不到并单击“下一步”按钮才能转到下一页,即报告下载页面。

以下是与“下一步”按钮相关的html代码部分:

</div>

<div id="ctl00_ContentView_UpLinkButtonNext">
    <table width="100%">
        <tr style="height: 15px">
            <td style="height: 15px">
            </td>
        </tr>         
        <tr>
            <td style="text-align:right" class="common_link_bold">
                <div class = "button_text_icon right">
                    <a id="ctl00_ContentView_LinkButtonNext" disabled="disabled" class="disabled">Next</a>
                </div>
            </td>
        </tr>
    </table>
</div>

启用后,如何找到并单击“下一步”按钮?

谢谢!

2 个答案:

答案 0 :(得分:1)

您可以使用显式等待来等待按钮可单击

element = WebDriverWait(driver, 10).until(expected_conditions.element_to_be_clickable((By.ID, 'ctl00_ContentView_LinkButtonNext')))
element.click()

element_to_be_clickable将检查按钮是否已启用。从docs

  

用于检查元素的期望可见并已启用,例如   您可以单击它。

请注意,您需要添加一些导入内容

from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions

答案 1 :(得分:0)

您可以等待启用的“下一步”按钮,如下所示:

from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, "//a[not(@class='disabled') and .='Next']"))).click()