python-3.x - 如何使用 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:
解决方案
要单击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()
推荐阅读
- java - Play Framework 无法处理超过 12 个并发连接
- c++ - 使用 wxWebView 时应该如何避免崩溃
- jquery - 将字符串的第一部分大写
- machine-learning - 在聚类之前我应该对时间序列进行分析吗?
- python - Heroku Python Worker ProcFile
- css - 如何为 body 和 png img 设置相同的背景图像?
- jpa - 从 JPA 在 PostgreSQL 中生成检查约束
- swift - Swift 4字符串格式化程序到货币
- java - @RequestBody 变量返回空属性
- python - 正则表达式:从文本中提取一些信息