繁体   English   中英

找不到带有硒Python的按钮

[英]Unable to find button with selenium python

前几天我遇到了类似的问题,我通过使用xpath解决了此问题,因为我要查找的元素不在原始URL中

我正在尝试编写一个脚本来取消关注instagram上的某个人,因此我能够进入他们的个人资料页面-只需找到按钮即可。 我试过使用xpath和CSS选择器

driver = webdriver.Chrome('C:\*\chromedriver.exe')
driver.get("https://www.instagram.com/accounts/login/")

elem2 = driver.find_element_by_name("username")
elem2.send_keys('*')
elem3 = driver.find_element_by_name("password")
elem3.send_keys('*')
elem3.send_keys(Keys.ENTER)
while True:
    try:
        elem4 = driver.find_element_by_css_selector(".-Cab_, .bIiDR")
        elem4.click()
        break
    except Exception:
        pass


names = ['chucknorris']
for i in names:
    elem5 = driver.find_element_by_xpath('//*[@id="react-root"]/section/nav/div[2]/div/div/div[2]/input')   
    elem5.send_keys(i)
    time.sleep(1)
    while True:
        try:
            elems = driver.find_elements_by_class_name("yCE8d")
            elems[0].click()
            break
        except Exception:
            pass

##    while True:
##        try:
##            elemL = driver.find_elements_by_xpath('//*[@id="react-root"]/section/main/div/header/section/div[2]/div/span/span[1]')
##        except Exception:
##            pass
#This part was just so I got the error message rather than infinite loop of nothing
    time.sleep(4)
    elemL = driver.find_element_by_xpath('//div[@id="react-root"]/section/main/div/header/section/div[2]/div/span/span[1]/button')
    elemL.click()

'elemL'是所需的按钮元素

您的原始xpath失败有两个原因。

  1. ID为“ react-root”的元素是范围,而不是div。 (它在您的其他xpath中起作用,因为您有一个*)
  2. section元素下的子div是第一个div,而不是第二个div。

另一个选择是执行此操作(如果您确信按钮的文本不会经常更改:

driver.find_element_by_xpath('//*[@id="react-root"]//main//button[.="Following"]')

我的答案是使用driver.find_element_by_css_selector('.- fzfL'),它的背景颜色为attrib等(真的不确定这是否很重要)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM