ボタンをクリックするためにセレンを取得できません

Aug 16 2020

ウェブサイトの検査要素の 写真詳細写真マイコードスニペット

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from time import sleep
import requests
///
excel = driver.find_element_by_name('Excel')
excel.click()

それを実行しようとすると、これが表示されます。助けていただければ幸いです。

NoSuchElementException: Message: no such element: Unable to locate element: {"method":"css selector","selector":"[name="Excel"]"}

回答

2 DebanjanB Aug 17 2020 at 05:39

目的の要素がある角度ので、あなたが誘導しなければならない要素をクリックして、要素WebDriverWaitをするためにelement_to_be_clickable()、あなたは、次のいずれかを使用することができますロケータ戦略:

  • 使用CSS_SELECTOR

    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "button[mat-button] > span.mat-button-wrapper span"))).click()
    
  • 使用XPATH

    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//button[@mat-button]/span[@class='mat-button-wrapper']//span[text()='Excel']"))).click()
    
  • :次のインポートを追加する必要があります:

    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support import expected_conditions as EC
    
1 hams222 Aug 16 2020 at 13:42

driver.find_element_by_name( 'Excel')は、name = 'Excel'のタグを選択します。

たとえば、次のようなタグが見つかります。

<div name='Excel'>Hello</div>.

find_element_by_nameに相当するCSSは[name = "Excel"]です。

Webサイトのinspect要素の写真から、div内に「Excel」というテキストが含まれる要素を見つけようとしているようです。代わりに、次の関数を使用する必要があります。

driver.find_element_by_link_text('Excel')

お役に立てば幸いです。

PythonセレンWebドライバーの詳細については、このリンクを使用してください。それは私にとって大いに役立ちました!