Web 元素可见并已启用,但 .click() 在 python selenium 中与 phantomJS 失败
Web-element is visible and enabled but .click() fails in python selenium with phantomJS
我想单击 https://free-proxy-list.net/
上的 Next
按钮。 XPATH 选择器是 //*[@id="proxylisttable_next"]/a
我用下面的代码来做到这一点:
element = WebDriverWait(driver, 2, poll_frequency = 0.1).until
(EC.visibility_of_element_located((By.XPATH, '//*[@id="proxylisttable_next"]/a')))
if (element.is_enabled() == True) and (element.is_displayed() == True):
element.click()
print "next button located and clicked" # printed in case of success
随后,我从 table 中获取所有 IP,如下所示:
IPs = WebDriverWait(driver, 2, poll_frequency = 0.1).until
(EC.presence_of_all_elements_located((By.CSS_SELECTOR, ':nth-child(n) > td:nth-child(1)')))
尽管所有选项卡的 CSS_selector 都相同,而且我得到 next button located and clicked
,但两个选项卡的 IP 输出相同(即 Next
- 按钮从未被点击)。 此外,没有抛出异常。
因此,我的方法肯定有根本性的错误。
如何使用 python/selenium 在 phantomJS 中正确点击可见和启用的按钮?
为了您的理解,这里是我所指的页面部分的 html:
据我所知,可能有两种可能的原因:
点击未注册,但这种可能性很小。你可以看看其他的点击方式,比如JavascriptExecutor的点击。
(最有可能)在执行点击之后和加载第 2 页结果之前立即查询查找元素。由于元素从第 1 页可见,它会立即与第 1 页的元素列表一起退出。这样做的理想方法是(使用伪代码,因为我不熟悉 python)
一个。获取当前页码
b。获取当前页面的所有IP
c。单击下一步
d。检查(当前页 + 1 )页是否已激活(class 'active' 添加到第 2 个)
e。获取当前页面的所有元素
我是 OP,对于遇到类似问题的任何人 - Next
元素在选择后不再附加到 DOM,这导致 StaleElementReferenceException
在打印 element.is_enabled()
或者点击它时 - 可以找到详细的解决方案 here
我想单击 https://free-proxy-list.net/
上的 Next
按钮。 XPATH 选择器是 //*[@id="proxylisttable_next"]/a
我用下面的代码来做到这一点:
element = WebDriverWait(driver, 2, poll_frequency = 0.1).until
(EC.visibility_of_element_located((By.XPATH, '//*[@id="proxylisttable_next"]/a')))
if (element.is_enabled() == True) and (element.is_displayed() == True):
element.click()
print "next button located and clicked" # printed in case of success
随后,我从 table 中获取所有 IP,如下所示:
IPs = WebDriverWait(driver, 2, poll_frequency = 0.1).until
(EC.presence_of_all_elements_located((By.CSS_SELECTOR, ':nth-child(n) > td:nth-child(1)')))
尽管所有选项卡的 CSS_selector 都相同,而且我得到 next button located and clicked
,但两个选项卡的 IP 输出相同(即 Next
- 按钮从未被点击)。 此外,没有抛出异常。
因此,我的方法肯定有根本性的错误。
如何使用 python/selenium 在 phantomJS 中正确点击可见和启用的按钮?
为了您的理解,这里是我所指的页面部分的 html:
据我所知,可能有两种可能的原因:
点击未注册,但这种可能性很小。你可以看看其他的点击方式,比如JavascriptExecutor的点击。
(最有可能)在执行点击之后和加载第 2 页结果之前立即查询查找元素。由于元素从第 1 页可见,它会立即与第 1 页的元素列表一起退出。这样做的理想方法是(使用伪代码,因为我不熟悉 python)
一个。获取当前页码
b。获取当前页面的所有IP
c。单击下一步
d。检查(当前页 + 1 )页是否已激活(class 'active' 添加到第 2 个)
e。获取当前页面的所有元素
我是 OP,对于遇到类似问题的任何人 - Next
元素在选择后不再附加到 DOM,这导致 StaleElementReferenceException
在打印 element.is_enabled()
或者点击它时 - 可以找到详细的解决方案 here