如何使用 python & selenium 单击 linkedin 中的所有连接按钮?
How to click on all connect button in linkedin with python & selenium?
我在连接脚本中建立了链接,但他现在正在点击我的 class 按钮,我的错误是如何点击所有连接按钮?
如何点击所有连接按钮?
这是我的代码:
#search
click_search = WebDriverWait(driver, 50).until(EC.element_to_be_clickable((By.XPATH, "/html[1]/body[1]/header[1]/div[1]/form[1]/div[1]/div[1]/div[1]/artdeco-typeahead-deprecated[1]/artdeco-typeahead-deprecated-input[1]/input[1]"))).send_keys("pyt")
time.sleep(.2)
click_search = WebDriverWait(driver, 50).until(EC.element_to_be_clickable((By.XPATH, "/html[1]/body[1]/header[1]/div[1]/form[1]/div[1]/div[1]/div[1]/artdeco-typeahead-deprecated[1]/artdeco-typeahead-deprecated-input[1]/input[1]"))).send_keys("hon")
time.sleep(.2)
click_search = WebDriverWait(driver, 50).until(EC.element_to_be_clickable((By.XPATH, "/html[1]/body[1]/header[1]/div[1]/form[1]/div[1]/div[1]/div[1]/artdeco-typeahead-deprecated[1]/artdeco-typeahead-deprecated-input[1]/input[1]"))).send_keys(Keys.ENTER)
click_people = WebDriverWait(driver, 50).until(EC.element_to_be_clickable((By.XPATH, "/html[1]/body[1]/div[5]/div[7]/div[4]/div[1]/div[1]/header[1]/div[1]/div[1]/div[1]/ul[1]/li[1]/button[1]/span[1]"))).click()
click_connect = WebDriverWait(driver, 50).until(EC.element_to_be_clickable((By.XPATH, "/html[1]/body[1]/div[5]/div[7]/div[4]/div[1]/div[2]/div[1]/div[2]/div[1]/div[1]/div[1]/div[1]/ul[1]/li[4]/div[1]/div[1]/div[3]/div[1]/button[1]"))).click()
click_done = WebDriverWait(driver, 50).until(EC.element_to_be_clickable((By.XPATH, "/html[1]/body[1]/div[5]/div[8]/div[1]/div[1]/div[1]/section[1]/div[1]/div[2]/button[2]"))).click()
使用绝对 XPath 定位器不是最好的主意,因为它使它们非常脆弱并且对任何 DOM 更改都很敏感
推荐 locator strategy is using ID 可能的话,但是当 ID 不存在或动态时,最好想出一个替代方法。
例如,您可以坚持使用按钮文本。
比较 People
的 XPath 表达式:
/html[1]/body[1]/div[5]/div[7]/div[4]/div[1]/div[1]/header[1]/div[1]/div[1]/div[1]/ul[1]/li[1]/button[1]/span[1]
这个:
//span[text()='People']
而且两个表达式基本上都匹配同一个元素:
因此您可以使用 find_elements_by_xpath() 函数获取所有 Connect
按钮,例如:
connect_buttons = driver.find_elements_by_xpath("//button[text()='Connect']")
for connect_button in connect_buttons:
print(connect_button.get_attribute("aria-label"))
参考文献:
我在连接脚本中建立了链接,但他现在正在点击我的 class 按钮,我的错误是如何点击所有连接按钮?
如何点击所有连接按钮?
这是我的代码:
#search
click_search = WebDriverWait(driver, 50).until(EC.element_to_be_clickable((By.XPATH, "/html[1]/body[1]/header[1]/div[1]/form[1]/div[1]/div[1]/div[1]/artdeco-typeahead-deprecated[1]/artdeco-typeahead-deprecated-input[1]/input[1]"))).send_keys("pyt")
time.sleep(.2)
click_search = WebDriverWait(driver, 50).until(EC.element_to_be_clickable((By.XPATH, "/html[1]/body[1]/header[1]/div[1]/form[1]/div[1]/div[1]/div[1]/artdeco-typeahead-deprecated[1]/artdeco-typeahead-deprecated-input[1]/input[1]"))).send_keys("hon")
time.sleep(.2)
click_search = WebDriverWait(driver, 50).until(EC.element_to_be_clickable((By.XPATH, "/html[1]/body[1]/header[1]/div[1]/form[1]/div[1]/div[1]/div[1]/artdeco-typeahead-deprecated[1]/artdeco-typeahead-deprecated-input[1]/input[1]"))).send_keys(Keys.ENTER)
click_people = WebDriverWait(driver, 50).until(EC.element_to_be_clickable((By.XPATH, "/html[1]/body[1]/div[5]/div[7]/div[4]/div[1]/div[1]/header[1]/div[1]/div[1]/div[1]/ul[1]/li[1]/button[1]/span[1]"))).click()
click_connect = WebDriverWait(driver, 50).until(EC.element_to_be_clickable((By.XPATH, "/html[1]/body[1]/div[5]/div[7]/div[4]/div[1]/div[2]/div[1]/div[2]/div[1]/div[1]/div[1]/div[1]/ul[1]/li[4]/div[1]/div[1]/div[3]/div[1]/button[1]"))).click()
click_done = WebDriverWait(driver, 50).until(EC.element_to_be_clickable((By.XPATH, "/html[1]/body[1]/div[5]/div[8]/div[1]/div[1]/div[1]/section[1]/div[1]/div[2]/button[2]"))).click()
使用绝对 XPath 定位器不是最好的主意,因为它使它们非常脆弱并且对任何 DOM 更改都很敏感
推荐 locator strategy is using ID 可能的话,但是当 ID 不存在或动态时,最好想出一个替代方法。
例如,您可以坚持使用按钮文本。
比较 People
的 XPath 表达式:
/html[1]/body[1]/div[5]/div[7]/div[4]/div[1]/div[1]/header[1]/div[1]/div[1]/div[1]/ul[1]/li[1]/button[1]/span[1]
这个:
//span[text()='People']
而且两个表达式基本上都匹配同一个元素:
因此您可以使用 find_elements_by_xpath() 函数获取所有 Connect
按钮,例如:
connect_buttons = driver.find_elements_by_xpath("//button[text()='Connect']")
for connect_button in connect_buttons:
print(connect_button.get_attribute("aria-label"))
参考文献: