为了账号安全,请及时绑定邮箱和手机立即绑定

Python 如何点击多个子类别,得到这个错误按钮">...</a>

Python 如何点击多个子类别,得到这个错误按钮">...</a>

慕少森 2022-10-05 18:27:05
我已经通过 X PATH 运行了 selenium 并点击了 2 个子类别,这些子类别已经是按钮,现在我再次收到上面的错误 -ole="button">... 在点 (555, 55) 处不可点击。其他元素会收到点击:...(会话信息:chrome=80.0.3987.163)我的代码看起来像这样"#More 常见问题页面子类别 time.sleep(3)WaysToWatch = driver.find_element_by_xpath('//*[@id="main"]/div/div/section/div/div[2]/a')WaysToWatch.click()“#Set-pin -这个不想工作时间.sleep(5)SetPin = driver.find_element_by_xpath('//*[@id="main"]/div/div/section/div/div[3]/a')SetPin.click()我将不胜感激,因为我有很多需要通过的修复
查看完整描述

3 回答

?
aluckdog

TA贡献1847条经验 获得超7个赞

您可以使用 javascript 单击按钮:


SetPin = driver.find_element_by_xpath('//*[@id="main"]/div/div/section/div/div[3]/a')


script = 'arguments[0].click();'


driver.execute_script(script , SetPin)

这将允许您单击一个元素,即使它前面有另一个元素,但它不会因此模拟实际的用户体验。有时,您会希望显示另一个元素将收到点击的错误。


此外,最佳实践是使用等待来帮助防止在元素可用之前与元素交互出现问题。你可以这样做:


from selenium.webdriver.support import expected_conditions as EC

from selenium.webdriver.common.by import By

from selenium.webdriver.support.ui import WebDriverWait


wait = WebDriverWait(driver, 10)


locator = '//*[@id="main"]/div/div/section/div/div[3]/a'


SetPin = wait.until(EC.presence_of_element_located(By.XPATH, locator))


script = 'arguments[0].click();'


driver.execute_script(script , SetPin)


查看完整回答
反对 回复 2022-10-05
?
白衣非少年

TA贡献1155条经验 获得超0个赞

请使用 javascript click 找到以下答案,或者您也可以尝试使用 ActcionChains


          element = WebDriverWait(driver, 30).until(

                EC.element_to_be_clickable((By.XPATH, '//*[@id="main"]/div/div/section/div/div[3]/a')))

          driver.execute_script("arguments[0].click();", element)

或者


element = WebDriverWait(driver, 30).until(

                    EC.element_to_be_clickable((By.XPATH, '//*[@id="main"]/div/div/section/div/div[3]/a')))     


ActcionChains(driver).move_to_element(element).click().perform()

注意: 将以下 imorts 添加到您的解决方案中


from selenium.webdriver.common.action_chains import ActionChains

from selenium.webdriver.support.ui import WebDriverWait

from selenium.webdriver.support import expected_conditions as EC

from selenium.webdriver.common.by import By


查看完整回答
反对 回复 2022-10-05
?
PIPIONE

TA贡献1829条经验 获得超9个赞

driver.find_element_by_tag_name('body').send_keys(Keys.HOME)

使用 send_keys(Keys.HOME) 向上滚动到页面顶部


查看完整回答
反对 回复 2022-10-05
  • 3 回答
  • 0 关注
  • 82 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信