无法访问Selenium网站上的元素

时间:2019-06-11 12:00:32

标签: python selenium selenium-webdriver xpath

我想一页一页地更改页面,但是无法访问该元素。 http://prntscr.com/o0f4mx 我尝试了一切,但没有成功。请我帮忙。

XPath = //*[@id="___gcse_0"]/div/div/div/div[5]/div[2]/div/div/div[2]/div[10]/div/div[2]

代码:

tab2 = browser.find_element_by_xpath('//*[@id="___gcse_0"]/div/div/div/div[5]/div[2]/div/div/div[2]/div[10]/div/div[2]')
tab2.click()

这是我得到的错误:

  

回溯(最近一次通话最后一次):文件“ C:/ Users / ......”,第38行,   在       tab2 = browser.find_element_by_xpath('// [@ id =“ ___ gcse_0”] / div / div / div / div [5] / div [2] / div / div / div [2] / div [10] / div / div [2]')   文件   “ C:\ Users .... \ AppData \ Local \ Programs \ Python \ Python37-32 \ lib \ site-packages \ selenium \ webdriver \ remote \ webdriver.py”,   第394行,在find_element_by_xpath中       返回self.find_element(by = By.XPATH,值= xpath)文件“ C:\ Users ... \ AppData \ Local \ Programs \ Python \ Python37-32 \ lib \ site-packages \ selenium \ webdriver \ remote \ webdriver .py”,   第978行,在find_element中       '值':值})['值']文件“ C:\ Users ... \ AppData \ Local \ Programs \ Python \ Python37-32 \ lib \ site-packages \ selenium \ webdriver \ remote \ webdriver.py” ,   第321行,在执行中       self.error_handler.check_response(响应)文件“ C:\ Users .... \ AppData \ Local \ Programs \ Python \ Python37-32 \ lib \ site-packages \ selenium \ webdriver \ remote \ errorhandler.py”,   第242行,在check_response中       引发exception_class(message,screen,stacktrace)selenium.common.exceptions.NoSuchElementException:消息:没有这样   元素:无法找到元素:   {“方法”:“ xpath”,“选择器”:“ // [@ id =” ___ gcse_0“] / div / div / div / div [5] / div [2] / div / div / div [2] / div [10] / div / div [2]“}

更新-正确的元素 Correct Element

1 个答案:

答案 0 :(得分:0)

使用WebdriverWaitelement_to_be_clickable并遵循xpath来处理动态元素。

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
element=WebDriverWait(driver,20).until(EC.element_to_be_clickable((By.XPATH,"//div[@class='gsc-cursor']//div[@class='gsc-cursor-page'][contains(.,'2')]")))
element.click()

如果以上代码未单击该元素,则尝试JS执行器单击该元素。

element=WebDriverWait(driver,20).until(EC.visibility_of_element_located((By.XPATH,"//div[@class='gsc-cursor']//div[@class='gsc-cursor-page'][contains(.,'2')]")))
driver.execute_script("arguments[0].click();",element)