【问题标题】:Python webdriverwait or expected_conditions doesnt work for mePython webdriverwait 或 expected_conditions 对我不起作用
【发布时间】:2021-06-06 11:53:43
【问题描述】:

大家好,我正在学习 python 并尝试在网络浏览器游戏中创建宏,但我还无法访问登录部分。我只是将其卡在按钮单击

from selenium import webdriver
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as ec

driver = webdriver.Firefox(executable_path="C:\\Users\\batuh\\Desktop\\geckodriver.exe")
driver.get("https://www.adaletank.com/")
myPageTittle = driver.title
print(myPageTittle)

assert "AdaletTank | Bombom Pvp Server" in myPageTittle
print("Page loaded succesfuly")

loginbuton = driver.find_element_by_xpath("/html/body/div[6]/div[1]/div[2]/div/div/div/span[1]")
WebDriverWait(driver, timeout=3).until(ec.element_to_be_clickable(loginbuton))
loginbuton.click()

没有 webdriverwait 它只是不起作用,所以我必须先加载按钮,但由于某种原因我找不到按钮

我收到了这个错误

return driver.find_element(*by)
TypeError: selenium.webdriver.remote.webdriver.WebDriver.find_element() argument after * must be        an iterable, not FirefoxWebElement

【问题讨论】:

    标签: python selenium selenium-webdriver webdriverwait


    【解决方案1】:

    expected_conditions 函数将一个可迭代对象作为其参数,如错误所示。我相信你可以使用这个:

    from selenium.webdriver.common.by import By
    
    xpath = "/html/body/div[6]/div[1]/div[2]/div/div/div/span[1]"
    loginbuton = driver.find_element_by_xpath(xpath)
    WebDriverWait(
        driver, timeout=3
    ).until(
        ec.element_to_be_clickable(
            (By.XPATH, xpath)
        )
    ).click()
    

    导入By 是您需要的附加import 语句。

    【讨论】:

    • 非常感谢。我只是不知道我们必须部分进口。不幸的是,我最大的问题是没有加载按钮,它说现在在点 (557,503) 不可点击,因为另一个元素
      掩盖了它可能有太多 div 覆盖它有什么建议吗?
    • 根据你的网站,会有各种各样的东西。根据我的经验,这些元素通常是屏幕上的广告。通常有一个元素对应于关闭广告的 X。如果您拨打browser.find_element_*().click() 电话,您应该可以关闭广告。
    猜你喜欢
    相关资源
    最近更新 更多
    热门标签