Python Phython Selenium-检查元素,然后执行操作-Instagram自动化

Python Phython Selenium-检查元素,然后执行操作-Instagram自动化,python,python-3.x,selenium,selenium-webdriver,automation,Python,Python 3.x,Selenium,Selenium Webdriver,Automation,我是Python新手,当时正在研究Instagram自动化,通过使用selenium编写一个应用程序来喜欢Instagram帖子,我已经设法登录并访问我喜欢的帖子的URL,但是为了避免“取消链接”,如果以前喜欢的话,我想先执行一个检查 使用inspect元素,我已经能够识别like按钮的类,并且可以看到我可以使用几个属性: 在尝试了多篇文章之后,类名本身就是“wpO6b”(但是我不完全确定这是否是正确的方法)。此外,在打印该类的属性时,这里似乎有几个属性很有用,如svg aria label=和

我是Python新手,当时正在研究Instagram自动化,通过使用selenium编写一个应用程序来喜欢Instagram帖子,我已经设法登录并访问我喜欢的帖子的URL,但是为了避免“取消链接”,如果以前喜欢的话,我想先执行一个检查

使用inspect元素,我已经能够识别like按钮的类,并且可以看到我可以使用几个属性:

在尝试了多篇文章之后,类名本身就是“wpO6b”(但是我不完全确定这是否是正确的方法)。此外,在打印该类的属性时,这里似乎有几个属性很有用,如svg aria label=fill=(喜欢或不喜欢帖子时,值不同)

我能够打印该属性,但是进一步操作是一个挑战,如果能使用innerHTML输出进一步编写if循环或if else循环等来检查参数是否与“未链接”帖子的参数匹配,然后运行该值,我将不胜感激。单击()要单击并喜欢文章,请转到列表中的下一个URL

代码

drv.get(ur1)
elm = drv.find_element_by_class_name("wpO6b")
print(elm.get_attribute("innerHTML"))
输出:

<svg aria-label="Unlike" class="_8-yf5 " fill="#ed4956" height="24" viewBox="0 0 48 48" width="24"><path clip-rule="evenodd" d="M35.3 35.6c-9.2 8.2-9.8 8.9-11.3 8.9s-2.1-.7-11.3-8.9C6.5 30.1.5 25.6.5 17.8.5 9.9 6.4 3.5 13.7 3.5 20.8 3.5 24 8.8 24 8.8s3.2-5.3 10.3-5.3c7.3 0 13.2 6.4 13.2 14.3 0 7.8-6.1 12.3-12.2 17.8z" fill-rule="evenodd"></path></svg>

使用此功能后,它会检查按钮是否具有不同的填充颜色,然后是否喜欢帖子,或者继续下一个链接:

inst_url = open('links.txt', 'r')

def link_click():
    sleep(randint(1, 2))
    for urls in inst_url:
        drv.get(urls)
        elm = drv.find_element_by_class_name('wpO6b')
        elem = (elm.get_property("innerHTML"))
        if "#262626" in elem:
            value = drv.find_element_by_xpath(
                '//*[@id="react-root"]/section/main/div/div[1]/article/div[2]/section[1]/span[1]/button')
            value.click()

使用此选项后,它会检查按钮是否具有“不喜欢”的填充颜色,然后喜欢该帖子,或者继续下一个链接:

inst_url = open('links.txt', 'r')

def link_click():
    sleep(randint(1, 2))
    for urls in inst_url:
        drv.get(urls)
        elm = drv.find_element_by_class_name('wpO6b')
        elem = (elm.get_property("innerHTML"))
        if "#262626" in elem:
            value = drv.find_element_by_xpath(
                '//*[@id="react-root"]/section/main/div/div[1]/article/div[2]/section[1]/span[1]/button')
            value.click()

你的问题似乎有答案。使用if语句检查属性aria标签的挑战是什么?它不工作吗?我无法将输出放入变量中,比如var1=(elm.get_属性(“innerHTML”)),以便使用if语句处理输出。如果我能在打印功能上运行它,如果你能提供建议,那就太好了。你试过elm.get_属性(“aria标签”)吗。这应该返回-'不一样',因为innerHTML以字符串形式返回所有属性,您还可以检查字符串是否包含“不一样”。感谢您的建议,elm.get_属性(“aria标签”)抛出了一个错误。字符串建议可以尝试一下,但我不确定如何将输出打印(elm.get_属性(“innerHTML”))放入字符串中,我可以使用该字符串或将其放入变量中。您的问题似乎有答案。使用if语句检查属性aria标签的挑战是什么?它不工作吗?我无法将输出放入变量中,比如var1=(elm.get_属性(“innerHTML”)),以便使用if语句处理输出。如果我能在打印功能上运行它,如果你能提供建议,那就太好了。你试过elm.get_属性(“aria标签”)吗。这应该返回-'不一样',因为innerHTML以字符串形式返回所有属性,您还可以检查字符串是否包含“不一样”。感谢您的建议,elm.get_属性(“aria标签”)抛出了一个错误。字符串建议,将给它一个机会,但我不确定如何将输出打印(elm.get_属性(“innerHTML”))放入字符串中,我可以使用该字符串或将其放入变量中。