有一个列表项(li),您需要单击它。但是,对于这种坚持-尚不清楚。
我和id都尝试过,对于xpath和链接中的文本都尝试过-
<li id="l_pr" class=""><a href="https://vk.com/32444224224" onclick="return nav.go(this, event, {noback: true, params: {_ref: 'left_nav'}});" class="left_row">
<span class="left_fixer">
<span class="left_count_wrap fl_r left_void"><span class="inl_bl left_count_sign">0</span></span>
<span class="left_icon fl_l"></span>
<span class="left_label inl_bl">My page</span>
</span>
</a>
<div class="left_settings" onclick="menuSettings(0)">
<div class="left_settings_inner"></div>
</div>
</li>
我希望点击“我的页面”链接
答案 0 :(得分:0)
请检查是否存在iframe,在这种情况下,您必须在单击该元素之前切换到该iframe。如果没有iframe,则直接单击此元素。 试试这个xpath,
yarn
答案 1 :(得分:0)
要click()
文本为我的页面的链接,因为该元素是启用了JavaScript的元素,因此您必须为 WebDriverWait element_to_be_clickable()
,您可以使用以下任一解决方案:
使用XPATH
A:
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//span[text()='My page']"))).click()
使用CSS_SELECTOR
:
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "li[id$='_pr']>a[href^='http'] span.left_label"))).click()
使用XPATH
B:
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//li[contains(@id,'_pr')]/a[starts-with(@href,'http')]//span[text()='My page']"))).click()
注意:您必须添加以下导入:
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC