John Moody
John Moody

Reputation: 81

Locate Tweet 'like' button using xPath (Selenium, Python)

I am trying to locate a tweet like button using xPath.

If I go to https://twitter.com/BillGates and use Chrome developer tools, I can see:

/html/body/div[2]/div/div/div[2]/main/div/div/div/div[1]/div/div[2]/div/div/div[2]/section/div/div/div[1]/div/div/div/div/article/div/div[2]/div[2]/div[2]/div[3]/div[3]/div/div/div[1]/svg/g/path

I tried to use both Python + Selenium and XPath Helper Chrome extension but with both approaches I cannot find the button.

I have tried without success using the full xPath and also the query below:

.find_element_by_xpath("//path[starts-with(@d, 'M')]").click()  

Actually, I cannot get anything past the last div. //svg, //g and //path all get zero results. //div on the other hand, gets me 900+ results...

Appreciate if anyone can help to point me in the right direction.

Thanks!

Upvotes: 1

Views: 1825

Answers (1)

Saidden
Saidden

Reputation: 111

I highly recommend not using Twitter to practice automation. Anyways, i've seen that the likes buttons has data-testid attribute which it's value is unique to that element you are looking for, so we can easily get all the likes buttons elements like this:

//div[@data-testid="like"]

Or with css selector like this:

div[data-testid="like"]

Assuming you are writing in Python, Then we can use find_elements method to get all the elements in a list.

like_buttons = driver.find_elements_by_xpath("//div[@data-testid="like"]")  

And easily click any tweet's like button you'd by index,

like_buttons[0].click()  # 0 Is the first tweet, 1 is the 2nd etc...

Note that you might need to perform a hover on this element and then click it, So if the driver find the element, but it's not clickable, it must be it.

Upvotes: 3

Related Questions