我正在尝试使用Selenium浏览器python来获取Facebook帐户的数据,但无法找到我可以点击单击导出按钮的元素。
我尝试过,但似乎给我班上一个错误。
SELECT mJan.StationID, mJul.StationID, ROUND((100 - (mJul.AvgMaxTemp) - (mJan.AvgMaxTemp) - (mJul.AvgDewPoint)),2) as MyScore
FROM
(
SELECT StationID, AVG(MaxTemp) as AvgMaxTemp, AVG(MeanDewPoint) as AvgDewPoint
FROM dbo.noaasmall
WHERE Month=7 AND (MaxTemp<=150)
GROUP BY StationID
) as mJul
INNER JOIN
(
SELECT StationID, AVG(MaxTemp) as AvgMaxTemp, AVG(MeanDewPoint) as AvgDewPoint
FROM dbo.noaasmall
WHERE Month=1 AND (MaxTemp<=150)
GROUP BY StationID
) as mJan
ON mJul.StationID = mJan.StationID
ORDER BY mJan.StationID;
您能告诉我如何单击“导出”按钮吗?
答案 0 :(得分:2)
文本为导出的元素是动态生成的元素,因此要定位该元素,必须诱使 WebDriverWait 使元素可点击 >,您可以使用Locator Strategies中的任何一个:
使用CSS_SELECTOR
:
WebDriverWait(browser, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "a.layerConfirm>div[data-hover='tooltip'][data-tooltip-display='overflow']"))).click()
使用XPATH
:
WebDriverWait(browser, 20).until(EC.element_to_be_clickable((By.XPATH, "//button[contains(@class, 'layerConfirm')]/div[@data-hover='tooltip' and text()='Export']"))).click()
注意:您必须添加以下导入:
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
答案 1 :(得分:0)
要在诸如Facebook,youtube之类的应用程序上运行自动化脚本非常困难,因为它们是一个庞大的公司,并且其Web应用程序是由世界上最好的开发人员开发的,但并非不可能运行自动化脚本,有时元素是动态生成的,有时是隐藏的或不活动的不能去点击
一种解决方案是您可以通过按xpath的实际或绝对方法单击单击操作来完成操作,或者在资源文件中未将其ID指定为“ export_button”,我认为这可能对您有帮助
您还可以按类名或css选择器查找元素,如我在屏幕快照中看到的,类名存在“ _271K _271m _1qjd layerConfirm”,您可以对此执行点击操作
答案 2 :(得分:0)
好吧,我可以使用xpath来解决它。 这是解决方法
self.driver.find_element_by_xpath("//*[contains(@class, '_271k _271m _1qjd layerConfirm')]").click()