繁体   English   中英

使用带有 -selenium -python 的类单击按钮搜索

[英]Click on a button search using classes with -selenium -python

我尝试单击按钮搜索,但这不起作用。 这是顶部代码:

driver = webdriver.Chrome()
url = "https://www.flashscore.fr/"
driver.get(url)

出现问题的代码(第一个版本):

buttonSearch = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.CSS_SELECTOR, ".header__button--search")))
                 driver.execute_script("arguments[0].click();", buttonSearch)

此代码不要求什么,但不显示错误。

所以我在类header__button--search选择了一个名为searchIcon___2C7g3ZD的类,这里是:

buttonSearch = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.CSS_SELECTOR, ".searchIcon___2C7g3ZD")))
driver.execute_script("arguments[0].click();", buttonSearch)

它显示此错误: selenium.common.exceptions.JavascriptException: Message: javascript error: arguments[0].click is not a function

为什么不能从页面点击按钮搜索?

编辑:这是页面上按钮搜索的代码 HTML:

<div id="search-window" class="header__button header__button--search"><span class="searchIcon___HyESXZA"><svg class="searchIcon___2C7g3ZD "><title>Search</title><use xlink:href="/res/_fs/build/control-icons-symbols.0acb5c0.svg#icon--search"></use></svg></span></div>

    buttonSearch = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.CSS_SELECTOR, ".header__button--search"))) driver.execute_script("arguments[0].click();", buttonSearch) 

这不起作用,因为您没有在buttonSearch上调用任何方法。 例如buttonSearch.click()buttonsearch.doubleClick()等方法,不调用方法,不会显示错误。 这是因为您没有使用元素的 css 选择器,而是使用了它的类名。

然后你注意到了这一点,并像这样修改了这个问题:


    buttonSearch = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.CSS_SELECTOR, ".searchIcon___2C7g3ZD")))
    driver.execute_script("arguments[0].click();", buttonSearch)

但是,这允许定位元素。 但是 webdriver 现在无法与元素交互。 因为在错误中明确指出arguments[0].click is not a function 因此,要解决此问题,不要使用execute_script只需使用click() 这是一种更简单的方式,也是预期的方式。 像这样:


    buttonSearch = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.CSS_SELECTOR, ".searchIcon___2C7g3ZD"))).click()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM