Selenium Python:无法单击按钮

问题描述 投票:1回答:1

希望大家都很安全!

我的问题很普遍,我已经看到很多类似的问题,尽管“等待/明确等待/等待可点击等”之类的东西对我不起作用。我想我想为这个问题寻求量身定制的解决方案:)

我尝试从此处http://kuap.ru/banks/8012/balances/en抓取一些数据(我使用网站的俄语版本,但我认为来源必须完全相同)

为此,我必须从下拉列表中选择适当的数据,然后按“比较数据”按钮。但是,我无法单击该按钮。

The button

我的简单代码:

driver.find_element_by_css_selector('select[name = CurDate]').click()
select = Select(driver.find_element_by_css_selector('select[name = CurDate]'))
select.select_by_visible_text('01.01.2019')
driver.find_element_by_xpath('//*[@id="BalanceTable"]/thead/tr[1]/th[3]/input').click()

最后一行实际上没有单击。我已经多次看到问题出在路径上,我尝试了几种CSS路径-没有任何效果。看来这里是同样的问题:当我尝试获取按钮的。text时,它返回'',而对于其他按钮,它返回其实际文本。

我的主要假设是问题可能出在这个神秘的“影子内容”中(See a snapshot)我无法在Safari中查看。我试图通过“ ... input //”访问它(尽管我知道这有点愚蠢),但没有设法看到它。我已经读过一些有关DOM等的内容...但是它并没有真正的帮助(或者我读得不好)

因此,任何有用的提示都将具有很大的价值!已经在这个非常基本的东西上花了几个小时:)

P.S。要全面披露-我是Python的超级新手,试图从一开始就了解数据收集。

python selenium button
1个回答
1
投票

在xpath下尝试:

 wait = WebDriverWait(driver, 30)
 wait.until(EC.element_to_be_clickable((By.XPATH, "//input[@class='btn btn-default']"))).click()

注意:请在解决方案中添加以下内容

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

工作代码:

driver.get('http://kuap.ru/banks/8012/balances/en')
wait = WebDriverWait(driver, 10)
select = Select(driver.find_element_by_xpath("//select[@name='CurDate']"))
select.select_by_visible_text('01.01.2019')
wait.until(EC.element_to_be_clickable((By.XPATH, "//input[@class='btn btn-default']"))).click()

enter image description here

使用Java脚本的另一种解决方案::

element=wait.until(EC.element_to_be_clickable((By.XPATH, "//input[@class='btn btn-default']")))
driver.execute_script("arguments[0].click();", element)
© www.soinside.com 2019 - 2024. All rights reserved.