【问题标题】:Can't find element ID in google maps for selenium在谷歌地图中找不到硒的元素 ID
【发布时间】:2021-08-05 16:27:28
【问题描述】:

所以我正在尝试自动收藏 Google 地图上的大量公司(大约 500 家左右),它开始工作,直到公司没有网站,然后保存按钮的位置移动,@987654323 @ in selenium 单击“发送到您的手机”,这会破坏脚本。我已尝试查找“保存”按钮的元素 ID,但在任何地方都找不到。关于如何解决这个问题的任何想法? Here 是破坏脚本的第二个设置的链接,here 是大多数人的设置。

        search_box = driver.find_element_by_xpath('//*[@id="searchboxinput"]')
        search_button = driver.find_element_by_xpath('//*[@id="searchbox-searchbutton"]')
        # now I will fill and clear it after each search
        for i in range(0, df.shape[0]):
            val = df.loc[i, "Acceptable"]
            search_box.clear()

            #try:
                #search_box.clear()
            search_box.send_keys(f"{val}")
            search_button.click()
            time.sleep(9)
            save_button = driver.find_element_by_xpath('//*[@id="pane"]/div/div[1]/div/div/div[4]/div[2]/div/button')
            #save_button = driver.find_element_by_name("Save")
            
            save_button.click()
            time.sleep(1)
            #except:
            #    save_button = driver.find_element_by_xpath('//*[@id="pane"]/div/div[1]/div/div/div[4]/div[1]/div/button')
            #    save_button.click()
            #    time.sleep(1)
                
            fav_button = driver.find_element_by_xpath('//*[@id="action-menu"]/ul/li[2]').click()
            time.sleep(1)
            print(f"Saved {val}")

这是相关的代码块,我最初尝试使用它,但它只是在按下意外数量的按钮后循环通过损坏的值。我的想法是找到保存按钮元素 id 并使用它,但在查看 Inspect Element 时我真的找不到它。

我也尝试过使用find_element_by_link_textfind_element_by_partial_link_text 对他们使用Save,但都没有成功。

【问题讨论】:

  • 谷歌地图使用了大量的 iframe。确保使用 driver.switch_to.framedriver.switch_to.default_content 正确导航它们
  • @SimonNasser 如果它在该场景中为以前的公司工作,那会是一个问题吗?

标签: python selenium google-maps selenium-webdriver xpath


【解决方案1】:

代替

save_button = driver.find_element_by_xpath('//*[@id="pane"]/div/div[1]/div/div/div[4]/div[2]/div/button')

使用这个:

save_button = driver.find_element_by_xpath("//button[@data-value='Save']")

【讨论】:

  • 顺便说一句,我找不到与此定位器匹配的元素 //*[@id="action-menu"]/ul/li[2]
  • 这成功了!为什么它给你的 xpath 和它给我的不同?我只是右键单击并点击复制xpath。此外,单击保存按钮后,您找不到的元素会出现。地图拉出一个下拉菜单,您必须从该列表中进行选择才能实际保存一些东西,有点蹩脚但无论如何。
  • 你必须学习如何创建正确的选择器。由开发工具等自动生成的 XPath 和 CSS 选择器在 99% 的情况下都不好。
  • 该死的,那么如何找到更好的方法来获得它们呢?
  • Google selenium locators best practices 或类似名称。有很多教程!
猜你喜欢
  • 1970-01-01
  • 2019-09-10
  • 1970-01-01
  • 1970-01-01
  • 2017-04-20
  • 1970-01-01
  • 1970-01-01
  • 2011-08-12
  • 2021-08-17
相关资源
最近更新 更多