使用contains在Selenium Web驱动程序XPATH中查找文本



我正在研究Python的30天-第16天-Scrape&使用Selenium&蟒蛇

然而,我发现使用XPATH在Instagram中查找"关注"按钮是不起作用的。

def click_to_follow(browser):
my_follow_btn_xpath = '//*[contains(text()='follow')]'
follow_btn_els = browser.find_elements(By.XPATH, my_follow_btn_xpath)
for btn in follow_btn_els:
try:
btn.click()
except:
pass

new_user = 'ted'
new_user_url = f'http://www.instagram.com/{new_user}/'
browser.get(new_user_url)
click_to_follow(browser)

以上是代码,但它表明我有一个无效的语法。

my_follow_btn_xpath = '//*[contains(text()='follow')]'
^^^^^^
SyntaxError: invalid syntax

有人能帮忙吗?我搜索过类似的帖子,但还是找不到。

您不能在xpath中使用单引号。

更改此项:

my_follow_btn_xpath = '//*[contains(text()='follow')]'

到此:

my_follow_btn_xpath = '//*[contains(text()="follow")]'

这将起作用:注:您将Follow作为follow。文本是Follow,而不是followDOM

WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH,"//div[text()='Follow']"))).click()

这将是你想要的特定元素:

WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH,"//h1//parent::div//div[text()='Follow']"))).click()

最新更新