如何使用 selenium python 按文本单击 css 选择器

How to click css selector by text using selenium python

我想测试一些动作。在这种情况下,我需要单击文本以获取上传表单,但下面的 none 个表单不会产生预期的结果。

这部分 HTML 代码,我需要在其中执行一些操作:

<a href="javascript:;" class="dg-hider st-mb__20 st_add-material__link" onclick="iu.ajax(event,'https://alexanderro.com/ajax/documentAddGsiUpload');">
            Choose your category
        </a>
<div id="GSIData"></div>

none 个作品:

WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CLASS_NAME, "dg-hider st-mb__20 st_add-material__link"))).click()

driver.find_element_by_class_name("dg-hider st-mb__20 st_add-material__link").click()

driver.find_element_by_id("GSIData").click()

WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.ID, "GSIData"))).click()

driver.find_element_by_css_selector("a[onclick*=https://alexanderro.com/ajax/documentAddGsiUpload]").click()

你能帮帮我吗?

我无法在 Stack Overflow 中发表评论,所以我会尽力帮助您:

你试过了吗:

driver.find_element_by_css_selector('[class="dg-hider st-mb__20 st_add-material__link"]').click()

or 

driver.find_element_by_xpath('"//a[contains(text(), 'Choose your category')]"').click()

您需要等待元素出现或可见:

您可以使用下面的代码片段,它应该可以工作

def wait_for_element_to_be_clickable(element):
    WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.CSS_SELECTOR, element)))


element = "a.dg-hider.st-mb__20.st_add-material__link"
wait_for_element_to_be_clickable(element)
driver.find_element_by_css_selector(element).click()
print("Clicked")