首页 > 解决方案 > 如何使用 Selenium WebDriver 单击“复制”?

问题描述

如何单击此 URL https://www.w3resource.com/java-exercises/basic/java-basic-exercise-249.php中的“复制”按钮 在此处输入图像描述

我需要点击的标签被标记为“复制”

我尝试了多种“查找元素”方法,但是我不断收到错误,例如没有这样的元素。

button = driver.find_elements_by_class_name('toolbar-item') #not working
driver.findElementByClassName("a.cc_btn.cc_btn_accept_all") #not working
driver.find_element_by_css_selector("toolbar").click() #not working
driver.findElementByClassName("toolbar-item").click() #not working

在这种情况下,如何选择“复制”参考以及使用什么方法单击“复制”?此外,当单击“复制”按钮时,如何将内容粘贴到文本文件中。

这些是我得到的其他错误。

错误:

Traceback (most recent call last):
  File "untitled.py", line 27, in <module>
    driver.find_element_by_css_selector("toolbar-item").click()
  File "/Library/Python/2.7/site-packages/selenium/webdriver/remote/webdriver.py", line 598, in find_element_by_css_selector
    return self.find_element(by=By.CSS_SELECTOR, value=css_selector)
  File "/Library/Python/2.7/site-packages/selenium/webdriver/remote/webdriver.py", line 978, in find_element
    'value': value})['value']
  File "/Library/Python/2.7/site-packages/selenium/webdriver/remote/webdriver.py", line 321, in execute
    self.error_handler.check_response(response)
  File "/Library/Python/2.7/site-packages/selenium/webdriver/remote/errorhandler.py", line 242, in check_response
    raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"css selector","selector":"toolbar-item"}
  (Session info: chrome=81.0.4044.138)

还:

NoSuchElementException: Message: Unable to locate element:

在此处输入图像描述

标签: python-3.xseleniumweb-scrapingcss-selectorswebdriver

解决方案


要单击Copy按钮诱导WebDriverWait()并等待presence_of_element_located()并跟随xpath。您需要滚动要单击的元素。

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

driver = webdriver.Chrome()
driver.get("https://www.w3resource.com/java-exercises/basic/java-basic-exercise-249.php")
copybtn=WebDriverWait(driver,15).until(EC.presence_of_element_located((By.XPATH,"//a[text()='Copy']")))
copybtn.location_once_scrolled_into_view
copybtn.click()

您也可以使用以下 css 选择器。

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

driver = webdriver.Chrome()
driver.get("https://www.w3resource.com/java-exercises/basic/java-basic-exercise-249.php")
copybtn=WebDriverWait(driver,5).until(EC.presence_of_element_located((By.CSS_SELECTOR,".toolbar-item>a")))
driver.execute_script("arguments[0].scrollIntoView();", copybtn)
copybtn.click()

推荐阅读