【发布时间】:2020-07-15 22:19:37
【问题描述】:
我试图找到下面用红色框起来的元素。由于这个特定元素的信息发生了变化,我使用上面突出显示的类 class= "_2z6nI" 来引用红色框内的元素,因为该类的位置及其与我尝试按下的元素的关系保持不变。
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//body//div[contains(@class,'_2z6nI')]*how do I define additional divisions here?*)).click()
希望能解释一下如何确定需要在 [contains(@class,'_2z6nI')] 之后写入的附加路径,以到达红色框内的元素。作为参考,我尝试单击的元素是 Instagram 用户在用户主页上的第一个帖子。
更新:
一些可测试的代码:
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium import webdriver
import time
class bot:
def __init__(self):
self.driver = webdriver.Chrome("path here")
def zoom(self, new_zoom):
"""
:param new_zoom: zoom level as a percentage
"""
change_js = """
var selectBox = document.querySelector("settings-ui").shadowRoot.querySelector("#main").shadowRoot.querySelector("settings-basic-page").shadowRoot.querySelector("settings-appearance-page").shadowRoot.querySelector("#zoomLevel");
var changeEvent = new Event("change");
selectBox.value = arguments[0];
selectBox.dispatchEvent(changeEvent);
"""
self.driver.get("chrome://settings/")
new_zoom = round(new_zoom / 100, 2)
self.driver.execute_script(change_js, new_zoom)
def accessPlayerProfile(self):
driver = self.driver
driver.get("https://www.instagram.com/zuck/")
time.sleep(2)
#click on first post
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "(//div[contains(@class,'Nnq7C weEfm')])[1]"))).click()
if __name__ == "__main__":
bot = bot()
bot.zoom(80)
bot.accessPlayerProfile()
【问题讨论】:
标签: python selenium selenium-chromedriver