我对Python和Selenium还不熟悉,只是遇到了一个问题。我正在尝试制作一个脚本,它将自动单击Facebook页面的“相似”按钮(在弹出中)。
编辑-本地主机网页代码:
<html>
<head>
<title>Link to Facebook Page</title>
<link rel="stylesheet" type="text/css" href="default.css">
</head>
<body>
<center>
<div id="fb_like">
<a href="https://m.facebook.com/AdagioTV" target="_blank"><img src="fblogo.png"></a>
</div>
</center>
</body>
</html>我有以下代码:
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
import time
webpage = r"http://localhost/like/" # local web
driver = webdriver.Firefox()
driver.get(webpage)
sbox = driver.find_element_by_class_name("fb_like")
sbox.click()
print "opened fb popup"现在,该页面打开我们facebook页面的移动版本(在弹出中),类似于:https://m.facebook.com/AdagioTV。
为了等待页面加载并单击like按钮,我有以下代码:
time.sleep(5)
print "slept 5 seconds" # page loading time
WebDriverWait(driver, delay).until(EC.presence_of_all_elements_located((By.ID, 'action_bar')))
likebutt = driver.find_element_by_link_text('Like')
likebutt.click()然而,这将找不到元素,既不喜欢也不喜欢action_bar,而且它永远不会-睡眠。我在这里做错什么了?谢谢!
发布于 2017-08-21 17:03:58
尝试:
String parentWindowHandler = driver.getWindowHandle(); //parent window
String subWindowHandler = null;
Set<String> handles = driver.getWindowHandles();
Iterator<String> iterator = handles.iterator();
while (iterator.hasNext()){
subWindowHandler = iterator.next();
}
driver.switchTo().window(subWindowHandler); // switch to popup window
time.sleep(5)
WebDriverWait(driver, delay).until(EC.presence_of_all_elements_located((By.ID, 'action_bar')))
likebutt = driver.find_element_by_link_text('Like')
likebutt.click()顺便说一句,如果它不起作用,尝试在弹出窗口中等待另一个元素定位器(更简单),这可能是错误的定位器的问题:我没有在你的网页代码中看到“动作条”。
https://stackoverflow.com/questions/45798781
复制相似问题