为了账号安全,请及时绑定邮箱和手机立即绑定

如何在selenium中模拟按钮点击?

如何在selenium中模拟按钮点击?

繁星淼淼 2023-10-05 16:40:59
我目前正在学习硒。我尝试模拟来自 url“https://worldpopulationreview.com/countries/countries-by-gdp/#worldCountries”的 csv 文件的按钮单击。我做了:Right click the csv iconInspect and copy the full xpath然后我使用了以下代码:from selenium import webdriverfrom selenium.webdriver.common.keys import Keysimport osdriver = webdriver.Chrome()url = 'https://worldpopulationreview.com/countries/countries-by-gdp'driver.get(url)xpath = '/html/body/div[1]/div/div[1]/div[2]/div[2]/div[1]/div/div/div/div[2]/div[1]/a[2]'btn = driver.find_element_by_xpath(xpath)btn.click()# df = pd.read_csv(os.path.expanduser('~/Downloads/data.csv'))# print(df.head())# driver.close()错误WebDriverException: Message: unknown error: Element <a>...</a> is not clickable at point (1070, 879). Other element would receive the click: <div id="google_ads_iframe_/15184186/worldpopulationreview_adhesion_0__container__" style="border: 0pt none;">...</div>  (Session info: chrome=85.0.4183.121)  (Driver info: chromedriver=2.42.591059 (a3d9684d10d61aa0c45f6723b327283be1ebaad8),platform=Mac OS X 10.15.7 x86_64)尝试我尝试使用不同的 xpath 进行多次尝试,但没有成功。如何模拟该特定网站的按钮点击?
查看完整描述

2 回答

?
慕码人8056858

TA贡献1803条经验 获得超6个赞

induce WebDriverWait() 和 wait for element_to_be_clickable() 以及后面的 css 选择器。


driver.get("https://worldpopulationreview.com/countries/countries-by-gdp")

WebDriverWait(driver,10).until(EC.element_to_be_clickable((By.CSS_SELECTOR,"a[download='csvData.csv']"))).click()

您需要导入以下库。


from selenium.webdriver.common.by import By

from selenium.webdriver.support.ui import WebDriverWait

from selenium.webdriver.support import expected_conditions as EC


查看完整回答
反对 回复 2023-10-05
?
饮歌长啸

TA贡献1951条经验 获得超3个赞

有时,如果有东西挡住了,selenium 将无法单击某个元素。在这种情况下,您可以使用 JavaScript。但首先我会等待该元素可点击。


from selenium import webdriver

from selenium.webdriver.common.by import By

from selenium.webdriver.support.ui import WebDriverWait

from selenium.webdriver.support import expected_conditions as EC

from selenium.webdriver.common.keys import Keys

import os


driver = webdriver.Chrome()


url = 'https://worldpopulationreview.com/countries/countries-by-gdp'

driver.get(url)


xpath = '/html/body/div[1]/div/div[1]/div[2]/div[2]/div[1]/div/div/div/div[2]/div[1]/a[2]'


# btn = driver.find_element_by_xpath(xpath)

btn = WebDriverWait(driver, 10).until(

        EC.element_to_be_clickable((By.XPATH, "//a[@download='csvData.csv']")))

driver.execute_script("arguments[0].click();", btn)

# btn.click()


# df = pd.read_csv(os.path.expanduser('~/Downloads/data.csv'))

# print(df.head())

# driver.close()


查看完整回答
反对 回复 2023-10-05
  • 2 回答
  • 0 关注
  • 65 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信