硒罐';通过Python使用find_元素时,无法找到元素
继续获取硒罐';通过Python使用find_元素时,无法找到元素,python,selenium,xpath,css-selectors,webdriverwait,Python,Selenium,Xpath,Css Selectors,Webdriverwait,继续获取无法定位元素错误消息 xpath的第一个find元素很好,但第二个元素让我很为难 这是我的密码: import XLUtils from selenium import webdriver driver=webdriver.Chrome(executable_path="C:\Chrome_Driver\Chromedriver.exe") driver.get("https://www.canada.ca/en/revenue-agency/services/e-services/e
无法定位元素错误消息
xpath的第一个find元素很好,但第二个元素让我很为难
这是我的密码:
import XLUtils
from selenium import webdriver
driver=webdriver.Chrome(executable_path="C:\Chrome_Driver\Chromedriver.exe")
driver.get("https://www.canada.ca/en/revenue-agency/services/e-services/e-services-businesses/payroll-deductions-online-calculator.html")
driver.find_element_by_xpath('/html/body/main/div[1]/div[7]/p/a[1]').click()
driver.find_element_by_xpath('//*[@id="welcome_button_next"]').click()
您需要等待一段时间,才能出现Next
按钮
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWait
wait = WebDriverWait(driver, 10)
e = wait.until(
EC.presence_of_element_located((By.XPATH, '//*[@id="welcome_button_next"]'))
)
e.click()
要单击文本为“下一步”的元素,您需要引导WebDriverWait使该元素可单击,并且可以使用以下任一解决方案:
- 使用
CSS\u选择器
:
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "input.btn.btn-primary#welcome_button_next"))).click()
- 使用
XPATH
:
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//input[@class='btn btn-primary' and @id="welcome_button_next"]"))).click()
- 注意:您必须添加以下导入:
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
您不想在此处等待出现,然后单击。存在表示元素在DOM中,但不一定可见或可单击。您希望等待clickable。谢谢您的评论!真的很感激!您不想将XPath与那么多级别或索引一起使用,因为这会使它们变得脆弱(更容易损坏)。更好的第一个定位器是CSS选择器,A.btn-primary
。对于第二个定位器,当您只有一个ID时,不要通过XPath查找。而是使用。通过\u ID(“欢迎\u按钮\u下一步”)查找\u元素。
此外,您还需要将相关HTML添加到问题中。提供链接很好,但如果HTML在将来发生变化,问题将不再有用,也无法独立存在。与其用更多与现有答案几乎完全相同的答案“滥发”问题,不如帮助更正其他近乎完美的答案?谢谢您的评论!真的很感激@YoungwooJin如果我的答案符合您的问题,请单击我答案旁边的空心复选标记,该复选标记位于votedown箭头下方,以使复选标记变为绿色。