如何通过Selenium Python单击元素

时间:2019-01-15 06:19:21

标签: python-2.7 selenium xpath css-selectors webdriverwait

我正在尝试使用Selenium浏览器python来获取Facebook帐户的数据,但无法找到我可以点击单击导出按钮的元素。

查看所附的屏幕截图enter image description here

我尝试过,但似乎给我班上一个错误。

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;

您能告诉我如何单击“导出”按钮吗?

3 个答案:

答案 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()