在 python selenium phantomjs 中可靠地随机点击 link
Clicking reliably random link in python selenium phantomjs
我在 python 中使用此功能到 select 从当前打开的页面随机 link 并单击它:
def click_random_link(driver):
print("Clicking random link ")
links = driver.find_elements_by_xpath("//*[@href]")
if len(links):
l = links[randint(0, len(links) - 1)]
print(l.get_attribute("href"))
sleep(1)
l.click()
return True
else:
print('Link NOT found....')
return False
看起来很简单,但它非常非常不可靠..在超过 80% 的时间我会得到
errorMessage":"Element is not currently visible and may not be manipulated"
无论我在 phantomjs 中尝试什么,我都无法让它可靠地点击 link。我已经尝试最大化 window,尝试聚焦 link,没有有效 :( 最后一枪让这里变暗,但即使是全能的 google 也没有答案...
并非您的选择器获取的所有链接都是可见的 - 例如,其中一些链接可能位于隐藏的 div
内,因此即使使用 action.move_to_element(l)
...
要仅处理可见链接,您可以尝试以下代码:
def click_random_link(driver):
print("Clicking random link ")
links = [link for link in driver.find_elements_by_tag_name("a") if link.is_displayed()]
if links:
l = links[randint(0, len(links) - 1)]
driver.execute_script('arguments[0].scrollIntoView();', l)
print(l.get_attribute("href"))
sleep(1)
l.click()
else:
print('Link NOT found....')
我在 python 中使用此功能到 select 从当前打开的页面随机 link 并单击它:
def click_random_link(driver):
print("Clicking random link ")
links = driver.find_elements_by_xpath("//*[@href]")
if len(links):
l = links[randint(0, len(links) - 1)]
print(l.get_attribute("href"))
sleep(1)
l.click()
return True
else:
print('Link NOT found....')
return False
看起来很简单,但它非常非常不可靠..在超过 80% 的时间我会得到
errorMessage":"Element is not currently visible and may not be manipulated"
无论我在 phantomjs 中尝试什么,我都无法让它可靠地点击 link。我已经尝试最大化 window,尝试聚焦 link,没有有效 :( 最后一枪让这里变暗,但即使是全能的 google 也没有答案...
并非您的选择器获取的所有链接都是可见的 - 例如,其中一些链接可能位于隐藏的 div
内,因此即使使用 action.move_to_element(l)
...
要仅处理可见链接,您可以尝试以下代码:
def click_random_link(driver):
print("Clicking random link ")
links = [link for link in driver.find_elements_by_tag_name("a") if link.is_displayed()]
if links:
l = links[randint(0, len(links) - 1)]
driver.execute_script('arguments[0].scrollIntoView();', l)
print(l.get_attribute("href"))
sleep(1)
l.click()
else:
print('Link NOT found....')