我正在尝试使用Selenium在Python中创建一个脚本,以打开社交媒体页面(Tumblr(,输入用户登录凭据,并使用随机语句生成器发布"引用"帖子。我可以使用网站上的xpath(driver.find_element_by_xpath(输入凭据并选择创建帖子图标,但当尝试使用xpath 为帖子输入文本时
//*[@id="redpop_iframePostForms"]/div[3]/div/div/div/div/div[2]/div[2]/div/div[2]/div/div[3]/div[1]/div/div[1]/p
使用
self.driver.find_element_by_xpath('//*[@id="redpop_iframePostForms"]/div[3]/div/div/div/div/div[2]/div[2]/div/div[2]/div/div[3]/div[1]/div/div[1]/p').send_keys("It worked!!")
我收到错误
Message: no such element: Unable to locate element: {"method":"xpath","selector":"//div[@id="redpop_iframePostForms"]/div[3]/div/div/div/div/div[2]/div[2]/div/div[2]/div/div[1]/div/div/div[1]"}
我尝试过在div列表中使用其他div类,但找不到正确的div类。我也尝试过使用CSS选择器与代码
driver.find_elements_by_css_seletor("div[@aria-label='Quote']").send_keys("It worked!!!")
但是提供了错误
Message: invalid selector: An invalid or illegal selector was specified
从这里往哪里走有方向吗?
谢谢!
对于没有此类元素异常
根据您的xpath,我可以猜测该元素存在于iframe中。首先切换到那个框架,然后找到要与之交互的元素。
对于无效的选择器消息
使用css选择器定位元素的通用语法为:
tagname[attributeName=‘attributeValue’]
您不需要将@与attributeName一起使用。此外,您正在使用aria label='Quote'获取DOM中存在的所有div元素,并发送不正确的键。若您想对元素执行任何操作,您需要将它们放在列表中,然后对其进行迭代。希望这能有所帮助。