我在www.tradingview.com
上单击“登录”元素非常困难。我插入了implicitly_wait
,并尝试通过xPath和类名查找元素。无论我尝试什么,我都会得到element not interactable
或unable to locate element
。
from selenium import webdriver
def sign_in():
driver = webdriver.Chrome()
driver.get('https://www.tradingview.com/')
driver.implicitly_wait(10)
driver.find_element_by_class_name('tv-header__profile-menu js-device-menu-btn').click()
sign_in()
答案 0 :(得分:2)
似乎您正在尝试找到错误的元素...
尝试这个:
function groupBy(collection, property) {
var i = 0, val, index,
values = [], result = [];
for (; i < collection.length; i++) {
val = collection[i][property];
index = values.indexOf(val);
if (index > -1)
result[val].push(collection[i]);
else {
values.push(val);
result[val] = [];
result[val].push([collection[i]]);
}
}
return result;
}
var obj = groupBy(yourArray, "job");
答案 1 :(得分:1)
有两种登录方式。定位第二个
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
def sign_in():
driver = webdriver.Chrome()
driver.get('https://www.tradingview.com/')
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.CSS_SELECTOR, '.tv-header__dropdown-text [href*=signin]'))).click()
sign_in()
如果其他所有方法均失败,则可以使用javascript单击
driver.execute_script("document.querySelector('[href*=signin]').click();")
答案 2 :(得分:0)
嘿,一旦可以使用,就尝试一下
driver.findElement(By.Xpath("//span//a[text()='Sign In']")).click();
答案 3 :(得分:0)
示例代码:
driver.get("https://www.tradingview.com/")
WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.XPATH, "//a[text()='Sign In']"))).click()