如何访问并单击指向javascript函数的超链接按钮?
html元素:
<a href="javascript:Nav('-index=')" id="ctl04_ctl25_ctl00_lnk2NextPg" class="twPagerBtn right" role="button" onclick="mySpud.container.scrollIntoView();" title="Next Page" aria-label="Next Page">►</a>
我现在的代码是:
next_button='//*[@id="ctl04_ctl06_ctl00_lnk2NextPg"]'
try:
element=WebDriverWait(driver,15).until(
EC.presence_of_element_located((By.XPATH,next_button))
)
element.click()
except:
driver.quit()
Selenium无法找到元素,我还尝试使用find_element()函数使用各种方法(by等),但都没有效果。
发布于 2022-03-18 06:15:02
定位器//*[@id="ctl04_ctl06_ctl00_lnk2NextPg"]
似乎不是静态的。
试试这个:
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, "//*[@aria-label='Next Page']"))).click()
如果这不起作用,那么您可以尝试如下:
element = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, "//a[@aria-label='Next Page']")))
driver.execute_script("arguments[0].click();", element)
候补定位器:
您可以使用//*[@title= 'Next Page']
代替@aria-label
定位器备用定位器:
发布于 2022-03-18 14:38:44
你必须在这里处理几件事:
id
属性的初始部分是动态的,就像在ctl04_ctl25_ctl00_lnk2NextPg
中一样,每次重新访问页面时都会发生变化。因此,您必须构造一个动态。click()
时继续前进,而不是presence_of_element_located()
,您必须为引入WebDriverWait,并且可以使用以下定位器策略之一
使用
CSS_SELECTOR
:(驱动程序,20).until(EC.element_to_be_clickable((By.CSS_SELECTOR,)WebDriverWait$=‘NextPg’‘aria WebDriverWait=’Next Page'"))).click()
使用
XPATH
:(驱动程序,20).until(EC.element_to_be_clickable((By.XPATH,“//WebDriverWait(@id,'NextPg')"))).click() )
发布于 2022-03-18 19:07:52
只需直接调用该函数:
driver.execute_script("Nav('-index=')")
https://stackoverflow.com/questions/71528085
复制相似问题